2011-01-07 143 views
1

我有这个函数,它通过检查框的数组循环检查框的值是否等于文本框中的某些东西,我不知道什么是错的。Javascript函数不能与数组一起工作

function checkValue(contain) { 
     var boxes = document.getElementsByTagName("input"); 
    for (var i = 0; i < boxes.length; i++) { 
     if (boxes[i].name == "vote[]") { 
      if (boxes[i].value.indexOf(contain.value) != -1) { 
      boxes[i].checked = true; 
     } 
    } 
} 
} 

,这是我如何调用它

OnClick="uncheckAll(); checkValue(document.getElementsByName("countrylist"));" 

这个代码是在侧在PHP回声是这样回声'“;

回答

2

您不能在HTML中嵌入相同类型的引号。

OnClick="uncheckAll(); checkValue(document.getElementsByName(\'countrylist\'));" 

只需转义单引号就可以了,因为PHP提供了一种简单的转义机制。

0

contain你传递的参数是一个数组而不是字符串。这可能是问题?

+0

但值“包含”不是一个数组它的单词“英国” – 2011-01-07 20:54:35

+0

参数“包含”是这个调用的返回值`document.getElementsByName(“countrylist”)`getElementsByName返回一个具有该名称的元素数组 – 2011-01-07 20:55:48

+0

哦好吧,所以我确实包含[0]? – 2011-01-07 20:56:35

0

我认为你的javascript可能是与你的领域的名字投票[]。

是否曾经通过条件:

if (boxes[i].name == "vote[]") { 
0

1)更新inlince呼叫使用单引号:

checkValue(document.getElementsByName('countrylist')) 

2)使用document.getElementsByName使功能更好一点:

function checkValue(contain) 
{   
    var boxes = document.getElementsByName("vote[]"); 
    for (var i = 0; i < boxes.length; i++) 
    {  
     boxes[i].checked = (boxes[i].value == contain.value); 
    } 
} 
相关问题