检查子元素是否已存在

时间:2015-04-16 06:59:22

标签: javascript

我正在编写一些附加隐藏表单字段的代码,并将当前幻灯片ID附加为值,这是有用的。

    var items = this._core.$stage.children();
    for (var i = 0; i < items.length; i++) {
        if(items[i].classList.contains('active')) {
            var curr_slide = items[i];
            var curr_slide_value = curr_slide.firstElementChild.getAttribute('data-hash');
            console.log(curr_slide);
            console.log(curr_slide_value);
            if(curr_slide.getElementsByTagName('form').length) {
                var form = curr_slide.getElementsByTagName('form');
                if(form[0].getElementsByName('slide') == null) {
                    var input = document.createElement('input');
                    input.value = curr_slide_value;
                    input.type = 'hidden';
                    input.name = 'slide';
                    form[0].appendChild(input);
                    alert("appended form");
                } else {
                    alert("did not append form");
                }
            }
        }
    }

此行不起作用

if(form[0].getElementsByName('slide') == null) {

此时我需要检查输入字段是否为&#34; slide&#34;已经存在,如果没有,请添加它。

此处参考是我的表单对象

[form#gform_1, gform_1: form#gform_1, item: function, namedItem: function]
    0: form#gform_1
        0: textarea#input_1_1.textarea.medium
        1: textarea#input_1_2.textarea.medium
        2: textarea#input_1_3.textarea.medium
        3: textarea#input_1_4.textarea.medium
        4: input#gform_submit_button_1.gform_button.button
        5: input
        6: input#_gform_submit_nonce_1
        7: input
        8: input.gform_hidden
        9: input.gform_hidden
        10: input#gform_save_1.gform_hidden
        11: input#gform_resume_token_1.gform_hidden
        12: input.gform_hidden
        13: input.gform_hidden
        14: input#gform_target_page_number_1.gform_hidden
        15: input#gform_source_page_number_1.gform_hidden
        16: input

2 个答案:

答案 0 :(得分:2)

getElementsByName未定义为form - 元素。

最兼容的方式应该是:

if (!form[0].elements.slite) {
  // add <input name="slite"> to form[0]
}

答案 1 :(得分:1)

试试这个:

if(form[0].getElementsByName('slide').length == 0) {