0

这就是应该发生的事情。每次用户单击按钮时,div 的文本都会发生变化。我已经完美地完成了这个工作(感谢之前的问题)。每次点击都会生成一个带有一些随机文本的 cookie,然后这些文本会出现在 div 中。有 5 个 div(每个 cookie 一个)被填满,然后第一个被覆盖(在第 6 次点击时)。就像我说的,这是完美的。

但是,当有人第一次点击时,第一个 div 的文本正确显示,但“未定义”出现在其他 4 个 div 中(因为其他 cookie 尚未定义)。我想这是基于代码的预期。但是,我希望这样,如果这些 div 的内容是“未定义的”,那么 div 仍然是隐藏的。

这是div的代码:

<div id="textDiv" class="div"></div>
<div id="textDiv1" class="div1"></div>
<div id="textDiv2" class="div2"></div>
<div id="textDiv3" class="div3"></div>
<div id="textDiv4" class="div4"></div>

这是填写每个 div 的代码(但重复 5 次以覆盖所有 5 个 cookie 和 5 个 div ......省去所有这些以节省空间:

<script>
$(document).ready(function(){
$("form").click(function () {
var div = document.getElementById("textDiv");
div.textContent = $.cookie('cookie_1');
var text = div.textContent;
})
}); 
</script>

<script>
$(document).ready(function(){
$("form").click(function () {
var div = document.getElementById("textDiv1");
div.textContent = $.cookie('cookie_2');
var text = div.textContent;
})
}); 
</script>

ETC...

就像我说的,这很好用,但是在 cookie 全部设置之前 div 会显示“未定义”。我试过这个:

<script>
$(document).ready(function(){
$("form").click(function () {
var $cook1 = $.cookie('cookie_1');
var $cook2 = $.cookie('cookie_2');
var $cook3 = $.cookie('cookie_3');
var $cook4 = $.cookie('cookie_4');
var $cook0 = $.cookie('cookie_0');
})
}); 
</script>

<script>
$(document).ready(function(){
$("form").click(function () {
if(typeof cook2 == 'undefined'){
    $('textDiv1').hide();
    }
else {
     var div = document.getElementById("textDiv1");
div.textContent = $.cookie('cookie_2');
var text = div.textContent; 
}
})
}); 
</script>

ETC...

当 cookie(以及 div 中的文本)未定义时,这会隐藏 div。唯一的问题是,一旦定义了 cookie(再次单击表单后),它就不会取消隐藏。它似乎没有“重新检查”它是否被定义。这对我来说很奇怪,因为它似乎在每次点击时都会检查 cookie,因为 div 中的文本会随着 cookie 的变化而变化。

知道怎么做吗?

(是的,我假设我的代码太复杂了,有很多方法可以简化,但我是新手,所以我会采纳你的所有建议。)

(注意:我省略了生成 cookie 的代码,它工作正常,我认为不适用于答案。)

谢谢!

4

1 回答 1

1

这更简单,应该可以工作:

div.textContent = $.cookie('cookie_1') || "";

另外,我在您的代码中看到很多重复,您可以像这样简化它:

<script>
$(document).ready(function(){

    function fillDiv(divId, cookieId) {
        var div = document.getElementById(divId);
        div.textContent = $.cookie(cookieId) || "";
    }

    $("form").click(function () {
        fillDiv("textDiv", "cookie_1");
        fillDiv("textDiv1", "cookie_2");
        // etc.
    })
}); 
</script>
于 2013-08-26T00:42:15.000 回答