2013-08-16 39 views
0

我一直在试图解决这个问题,因为昨晚仍然没有运气。我非常需要帮助。情况如下:我有4个可点击的图片,每个图片在我的html文件上都有一个clickCount文本框。 clickCount文本框将显示图像被点击的次数。我得到了前2张图片,但是当我点击第三张图片时,第二张图片上的clickCount文本框会增加。这是我的代码:JQuery if else语句在第二种情况下停止

<script> 
    var targetId=""; 

$(".foods").click(function(event) { 
    if (event.target.id=="img1"){ 
    targetId="img1clickCount"; 
    addOrders();} 

else if(event.target.id="img2"){ 
    targetId="img2clickCount"; 
    addOrders(); } 

else if(event.target.id="img3"){ 
    targetId="img3clickCount"; 
    addOrders(); } 

else if(event.target.id="img4"){ 
    targetId="img4clickCount"; 
    addOrders(); } 

}); }); 

function addOrders(){ 
document.getElementById(targetId).value=parseInt(document.getElementById(targetId). 
    value)+1; 
} 
    </script> 

<body> 
<table cellpadding=0 cellspacing=0 border=1 height=330 style="margin-left:18px"> 
<tr> 

//Images 
<td><img src="gangjeong.png" width="100" style="cursor:pointer" id="img1"        
class="foods"></td> 
<td><img src="daktoritang.png" width="100" style="cursor:pointer" id="img2" 
class="foods"></td> 
<td><img src="tangsuyuk.png" width="100" style="cursor:pointer" id="img3"  
class="foods"></td> 
<td><img src="tangsuyuk.png" width="100" style="cursor:pointer" id="img4"  
class="foods"></td> 
<tr height="5"> 

//Textboxes 
<td><input type="text" maxlength="5" readonly="readonly" value="0" id="img1clickCount"> 
</td> 
<td><input type="text" maxlength="5" readonly="readonly" value="0" id="img2clickCount"> 
</td> 
<td><input type="text" maxlength="5" readonly="readonly" value="0" id="img3clickCount"> 
</td> 
<td><input type="text" maxlength="5" readonly="readonly" value="0" id="img4clickCount"> 
</td> 
</tr></table> 

回答

3

第一个条件;

if (event.target.id=="img1"){  // Compares 

第二种情况;

if (event.target.id="img2"){  // Uses = (ie assigns, not compares) 
+3

哦,我是多么白痴啊。非常感谢您的快速回复。现在正在工作。干杯! – Clyde

0

你需要使用==,而不是=作比较,前者是比较算哪里像后来是赋值运算符

1

检查==在其他条件

制作它

$(".foods").click(function(event) { 
    if (event.target.id=="img1") { 
    targetId="img1clickCount"; 
    addOrders(); 
    } 
    else if(event.target.id=="img2") { 
    targetId="img2clickCount"; 
    addOrders(); 
    } 
    else if(event.target.id=="img3"){ 
    targetId="img3clickCount"; 
    addOrders(); 
    } 
    else if(event.target.id=="img4"){ 
    targetId="img4clickCount"; 
    addOrders(); 
    } 
}) 
1

您应该使用===您比较

else if(event.target.id === "img2"){ 
0

改写这样的代码,它是简单得多 -

$(".foods").click(function(event) { 
    addOrders($(this).attr('id') + 'clickCount'); 
}); 

function addOrders(targetId){ 
    var value = parseInt(
     $('#' + targetId).val()) + 1; 
    $('#' + targetId).val(value); 
} 
0

其他人已经指出你=/==错字。

但不是所有的if/then/elseif的,使用干法:

targetId = this.id + clickCount; 
addOrders(); 

注意,你不需要使用jQuery时使用event.target,它结合this在所有目标元素事件处理程序。

我还建议不要设置全局变量,而应将targetId作为参数传递给addOrders