Javascript:Javascript忽略了自己生成的元素

时间:2016-06-08 08:53:01

标签: javascript html

我有这个javascript函数,可以使用ID生成新的选择:

function generateChild(root, categories){
 ++counter;
    var appendid = "id='selectCategory_".concat(counter);
    var coma = "'";
    var mayorque = "'>";
    var appendcoma = appendid.concat(coma);
    var select ="<div class='selectContainer'".concat(appendcoma);
    var close = "><select ";
    var cerrar = select.concat(close);
    var appendidselect = cerrar.concat(appendid);
    var html = appendidselect.concat(mayorque);
    for (var i = 0; i < categories.length; i++) {
        html += "<option value='" + categories[i] + "'>" + categories[i] + "</option>";
    }
    html += '</select></div>';


    // ---------------------------

    // ---------------------------
    // create an element from the html string
    // ---------------------------
    var tplt = root.createElement('template');
    tplt.innerHTML = html;
    var el = tplt.content.firstChild;
    // ---------------------------

    // ---------------------------
    // attach the change handler
    // ---------------------------
    el.firstChild.addEventListener("change", handle_onChange);
    // ---------------------------

    return el;
    }
}

然后使用此函数搜索最后一个没有空格的下拉列表,并将其保存在隐藏的输入中供以后使用:

  if(this.value == ' '){
        for (var i = counter - 1 ; i >= 0 ; --i){
            var string = i.toString();
            var selectid = "selectCategory_".concat(string);
            if(document.getElementById(selectid)){
                document.getElementById("category").value = document.getElementById(selectid).value;
                break;
            }
        }
    }
    else{
        var lastselectedvalue = this.value;
        document.getElementById("category").value = this.value;
    }

这适用于代码中已有的第一个下拉列表:

    <input type ="hidden" name="category" id = "category" value="">
        <div id="category0" class="selectContainer">
            <select id="selectCategory_0">
            <option>something</option>
            <option>something else</option>
            </select>
        </div>

但是从不与其他下拉列表一起使用,它总是返回undefined。

0 个答案:

没有答案