Javascript jQuery检查if";“未定义”;每次点击后

Javascript jQuery检查if";“未定义”;每次点击后,javascript,jquery,cookies,Javascript,Jquery,Cookies,这是应该发生的事情。每次用户单击按钮时,div的文本都会发生变化。我已经很好地完成了这项工作(多亏了前面的一个问题)。每次单击都会生成一个cookie,其中包含一些随机文本,然后出现在div中。有5个div(每个cookie一个)被填满,然后第一个div被覆盖(在第6次单击时)。正如我所说,这是完美的工作 但是,当有人第一次单击时,第一个div会正确显示文本,但其他4个div中会显示“undefined”(因为其他cookie尚未定义)。我想这是基于代码的预期。但是,我希望这样,如果那些div的

这是应该发生的事情。每次用户单击按钮时,div的文本都会发生变化。我已经很好地完成了这项工作(多亏了前面的一个问题)。每次单击都会生成一个cookie,其中包含一些随机文本,然后出现在div中。有5个div(每个cookie一个)被填满,然后第一个div被覆盖(在第6次单击时)。正如我所说,这是完美的工作

但是,当有人第一次单击时,第一个div会正确显示文本,但其他4个div中会显示“undefined”(因为其他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...

$(文档).ready(函数(){
$(“表单”)。单击(函数(){
var div=document.getElementById(“textDiv”);
div.textContent=$.cookie('cookie_1');
var text=div.textContent;
})
}); 
$(文档).ready(函数(){
$(“表单”)。单击(函数(){
var div=document.getElementById(“textDiv1”);
div.textContent=$.cookie('cookie_2');
var text=div.textContent;
})
}); 
等
正如我所说,这很好,但是在cookies设置完毕之前,div显示“undefined”。我尝试了以下方法:

<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...

$(文档).ready(函数(){
$(“表单”)。单击(函数(){
变量$cook1=$.cookie('cookie_1');
变量$cook2=$.cookie('cookie_2');
变量$cook3=$.cookie('cookie_3');
变量$cook4=$.cookie('cookie_4');
变量$cook0=$.cookie('cookie_0');
})
}); 
$(文档).ready(函数(){
$(“表单”)。单击(函数(){
如果(类型cook2==“未定义”){
$('textDiv1').hide();
}
否则{
var div=document.getElementById(“textDiv1”);
div.textContent=$.cookie('cookie_2');
var text=div.textContent;
}
})
}); 
等
当cookie(以及div中的文本)未定义时,这会隐藏div。唯一的问题是,一旦定义了cookie(在再次单击表单后),它不会取消隐藏。它似乎不会“重新检查”是否定义。这对我来说很奇怪,因为它似乎在每次单击时都会检查cookie,因为div中的文本会随着cookie的更改而更改

你知道怎么做吗

(是的,我认为我的代码太复杂了,有很多方法可以简化,但我对这方面还不熟悉,所以我会采纳你的所有建议。)

(注意:我遗漏了生成cookies的代码,该代码运行良好,我认为不适用于答案。)


谢谢!

这更简单,应该可以:

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>

$(文档).ready(函数(){
函数fillDiv(divId,cookieId){
var div=document.getElementById(divId);
div.textContent=$.cookie(cookieId)| |“”;
}
$(“表单”)。单击(函数(){
fillDiv(“textDiv”,“cookie_1”);
fillDiv(“textDiv1”、“cookie_2”);
//等等。
})
}); 

好悲伤。与我所拥有的相比,这非常简单。而且它确实有效!谢谢你的帮助。我还有很多东西要学。