2011-01-07 41 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); 
    } 
} 
相關問題