我有以下js代码:
function createConBox() {
var charDiv = document.getElementById("characterList"); // reference to "characterList" div
header = document.createElement("p"); // creates the <p> tag
charDiv.appendChild(header); // adds the <p> tag to the parent node
title = document.createTextNode("Show Only Lines By:"); // creates the text string
header.appendChild(title); // adds the text string to the parent node
// create select box and add elements
selectBox = document.createElement("select");
selectBox.setAttribute("id", "cList");
charDiv.appendChild(selectBox);
charNames = uniqueElemText("h3"); // array of character names
newOption = document.createElement("option");
selectBox.appendChild(newOption);
newOptionTitle = document.createTextNode("Show All Lines");
newOption.appendChild(newOptionTitle);
for (i = 0; i < charNames.length; i++) {
newOption = document.createElement("option");
selectBox.appendChild(newOption);
newOptionTitle = document.createTextNode(charNames[i]);
newOption.appendChild(newOptionTitle);
}
}
function showLines() {
alert("The Box has been changed");
}
每次更改框中的选项时,我都希望它调用'showLines()'。但是,每次我尝试实现一个事件时,我只能在页面加载时触发它,之后再也不会。任何帮助将不胜感激。
答案 0 :(得分:3)
我猜你正在这样做:
selectBox.onchange = showLines();
如果是这种情况,请删除()
:
selectBox.onchange = showLines;
答案 1 :(得分:3)
selectBox.onchange = showLines;
可以解决您的问题。
仅在模糊选择框后才会触发。为了解决这个问题,您可以使用onclick
代替onchange
答案 2 :(得分:0)
当我动态传递id而不是我做的时候:
var selectcell = tablerow.insertCell(1);
var selectelmt = document.createElement('select');
selectelmt.name = 'Select';
selectelmt.value = 'select';
selectelmt.classList = 'form-control input-sm cobclass';
selectelmt.onchange= onselectchange(i);
selectelmt.id = 'cobselect' + i;
selectelmt.options[0] = new Option('select');
selectcell.appendChild(selectelmt);
// ddrbind(i);
show();
i++;`