使用onchange和eventListener创建<select>

时间:2017-04-01 04:30:52

标签: javascript

我该怎么做: &lt; select onchange =&#39;禁用(此)&#39;&gt; //这里的选项&lt; / select&gt; 并使其成为一个createElement和eventListener?我不知道如何添加onchange =&#34;禁用(此)&#34;。 到目前为止,我有: var optionList = [&#34;默认&#34;,&#34;是&#34;,&#34;不&#34;]; var td = document.createElement(&#34; td&#34;); selectList = document.createElement(&#34; select&#34;); selectList.addEventListener(&#34; change&#34;,lockSelect,false); td.appendChild(选择列表的); newTableRow.appendChild(TD); for(var j = 0; j&lt; optionList.length; j ++) {    option = document.createElement(&#34; option&#34;);    option.value = optionList [j];    option.text = optionList [j];    selectList.appendChild(可选);  } 这使得&lt; select&gt;和&lt; options&gt;,但我无法弄清楚如何使onchange = disable(this)

1 个答案:

答案 0 :(得分:1)

您需要为lockSelect创建一个功能。您没有显示disable的功能,所以我不得不猜测。

lockSelect应调用disable将事件目标元素传递给它。

最好只更改禁用的函数来操作事件对象。并将其直接传递给事件监听器。

function disable(e) {
  e.target.disabled = true
}

var optionList = ["default", "yes", "no"];
var newTableRow = document.querySelector('tr')

function disable(element) {
  element.disabled = true
}

function lockSelect(e) {
  disable(e.target)
}

var td = document.createElement("td");
selectList = document.createElement("select");
selectList.addEventListener("change", lockSelect, false);
td.appendChild(selectList);
newTableRow.appendChild(td);

for (var j = 0; j < optionList.length; j++) {
  option = document.createElement("option");
  option.value = optionList[j];
  option.text = optionList[j];
  selectList.appendChild(option);
}
<table>
  <tr></tr>
</table>