【问题标题】:processing a Mutlidimensional HTML array in Javascript在 Javascript 中处理多维 HTML 数组
【发布时间】:2011-03-16 07:23:21
【问题描述】:

我有以下 HTML,它已用 smarty 模板语言循环播放:

<td><input type="checkbox" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][confirm]" /></td>
<td><input type="hidden" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][ipInt]" value="{$relatedIP.ipInt}">{$relatedIP.robotIP}</td>
<td><input type="hidden" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][patternID]" value="{$relatedIP.patternID}">{$relatedIP.pattern}</td>

我正在尝试访问 javascript 中的字段,但到目前为止,即使是基础知识,我也遇到了麻烦。有人可以帮忙吗?

var boxes = document.getElementsByName('confirmRelated');
alert(boxes.length);

此时返回 0,这显然是错误的。我正在尝试遍历所有这些并选中“确认”复选框。

任何帮助表示赞赏。

【问题讨论】:

    标签: javascript html multidimensional-array


    【解决方案1】:

    您无法通过document.getElementByName() 访问它们。以下应该有效:

    var boxes = document.getElementsByTagName('input');
    for(i = 0; i < boxes.length; i++){
        if(boxes[i].name == 'confirmRelated' && boxes[i].type == 'checkbox'){
            boxes[i].checked = 'checked';
        }
    }
    

    这将使用类型复选框检查所有输入。

    编辑:使用原型之类的框架可以让它变得更容易:

    $$('input[name=^"confirmRelated"]').each(function(elm){
        if(elm.type == 'checkbox') elm.checked = 'checked';
    });
    

    【讨论】:

      【解决方案2】:

      此时返回 0,即 明显错了。

      不,不是。没有以 'confirmRelated' 作为名称的元素。

      要遍历您的“数组”(javascript 不会将其视为数组),您应该遍历所有输入字段(getElementsByTagName('input')...)并检查当前元素的名称是否以 ' 开头confirmRelated'(如果确实如此,做任何你想做的事)。

      【讨论】:

        【解决方案3】:

        你可以使用 JQuery 选择器-

        $("input[name^='confirmRelated']")
        

        由于所有输入名称都以“confirmRelated”开头,并且模板引擎为其添加了一些后缀

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-28
          • 1970-01-01
          • 2019-08-22
          • 1970-01-01
          • 2022-08-23
          • 1970-01-01
          • 2011-12-13
          • 1970-01-01
          相关资源
          最近更新 更多