【问题标题】:Javascript function not working with an arrayJavascript函数不适用于数组
【发布时间】:2011-06-05 12:51:35
【问题描述】:

我有这个函数,它循环检查复选框的数组,检查框的值是否等于文本框中的值,我不知道出了什么问题。

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 中的一个 echo 中,就像这个 echo ' ';

【问题讨论】:

    标签: javascript checkbox onclick


    【解决方案1】:

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

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

    简单地转义单引号,如图所示,PHP 提供了一种简单的转义机制。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但值“contain”不是一个数组,它是单词“UK”
    • 参数“contain”是此调用的返回值document.getElementsByName("countrylist")getElementsByName 返回一个具有该名称的元素数组
    • 是的,或者您应该将 document.getElementsByName("countrylist")[0] 传递给函数。无论哪种方式都应该有所帮助。另外,正如 InsDel 所建议的,您不能将 javascript 双引号嵌套在 html 双引号内,因此将它们更改为单引号 document.getElementsByName('countrylist')[0]
    【解决方案3】:

    我认为您的 javascript 可能存在您的字段名称为 vote[] 的问题。

    它是否通过了条件:

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

    【讨论】:

    • 是的,我有一个检查所有框的功能,所以我将其修改为上述结果,但是检查所有功能有效
    【解决方案4】:

    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);
        }   
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2016-01-13
      • 2020-08-31
      • 1970-01-01
      • 2013-05-24
      • 2017-11-22
      • 2017-12-11
      相关资源
      最近更新 更多