在javascript中选择不调用onchange hander函数的标记

时间:2017-05-07 05:20:40

标签: javascript

我的javascript代码是:

var headerCell = document.createElement("TD");

var frag = document.createDocumentFragment(),
var select = document.createElement("select");
select.innerHTML = '<select id ="ddl" onchange="somekdfj()"><option value="0">wow</option><option value="1">pls</option></select>';

frag.appendChild(select);
headerCell.appendChild(frag);
row.appendChild(headerCell);

javascript函数:

function somekdfj(){        
    alert("HI");
}

我是新手。谁能告诉我为什么我无法调用上面的javascript函数?

2 个答案:

答案 0 :(得分:1)

您的代码中的以下行不正确:

select.innerHTML = '<select id ="ddl" onchange="somekdfj()"><option value="0">wow</option><option value="1">pls</option></select>';

原因:您要更改选择标记的 innerHTML ,这不会绑定 onchange 之类的事件。为此,您可以将此部分行更改为以下内容:

 select.setAttribute("onchange","somekdfj()");
 select.setAttribute("id","ddl");
 select.innerHTML = '<option value="0">wow</option><option value="1">pls</option>';

答案 1 :(得分:0)

您没有正确创建选择元素,因为在select元素中您添加了另一个select元素,onchange位于内部元素上导致问题。以下面的方式尝试,如果您使用createElement方法,或者您可以直接将innerHTML设置为您要追加已创建元素的父元素

headerCell = document.createElement("TD");

 frag = document.createDocumentFragment(),
 select = document.createElement("select");
 select.id="dd1";

 frag.appendChild(select);
 headerCell.appendChild(frag);
 row.appendChild(headerCell);

 var options = [{val: 0, text: "wow"}, {val: 1, text: "pls"}];

 for (var i = 0; i < options.length; i++) {
     var option = document.createElement("option")
     option.value=options[i].val;
     option.text=options[i].text;
     select.appendChild(option);
 }

 select.onclick=somekdfj;