Javascript 动态创建的组合框不工作
我使用javascript动态创建combobox 这是密码器!!!: 在创建combobox之后,如果我从创建的combobox中选择一个元素,那么我需要myFunctionJavascript 动态创建的组合框不工作,javascript,Javascript,我使用javascript动态创建combobox 这是密码器!!!: 在创建combobox之后,如果我从创建的combobox中选择一个元素,那么我需要myFunction 被激发。但它不起作用,函数myFunction没有激发任何想法为什么?我做错了什么?您可能希望使用由变量引用的匿名函数的概念: var myFunction = function () { alert('HELLO!'); } 它比通过字符串传递变量名稍微快一些。可以这样称呼它: selectElem.onch
被激发。但它不起作用,函数myFunction没有激发任何想法为什么?我做错了什么?您可能希望使用由变量引用的匿名函数的概念:
var myFunction = function () {
alert('HELLO!');
}
它比通过字符串传递变量名稍微快一些。可以这样称呼它:
selectElem.onchange = myFunction;
这是因为element.onchange接受处理函数。此外,您可以将函数本身以非常类似的方式传递给onchange:
selectElem.onchange = function () {
alert('HELLO!');
}
但在我看来,第一种解决方案更适合于以一个额外变量为代价进行重用
还请注意,处理程序函数始终可以接受事件本身作为参数:
selectElem.onchange = function (e) {
alert(e.target.className);
}
您需要为onchange属性分配一个函数,而不是字符串“myFunction” 选择elem.onchange=myFunction 使用.setAttribute函数将myFunction绑定到组合框的onchange事件
我找到了解决办法 替换
selectElem.onchange = 'myFunction()';
与
不指定字符串,只指定函数名:
selectElem.onchange = myFunction;
您应该使用如下函数:
function addOption(node, text, value)
{
var option;
option = document.createElement("option");
option.text = text;
option.value = value;
node.appendChild(option);
}
然后,您可以轻松添加选项:
function CreateComboBox(func)
{
var node;
node = document.createElement("select");
addOption(node, "10", 10);
addOption(node, "15", 15);
addOption(node, "20", 20);
addOption(node, "25", 25);
addOption(node, "30", 30);
node.onchange = func;
return node;
}
document.getElementById('ComboArea').appendChild(CreateComboBox(myFunction));
我在很多方面都有所改进。在继续前进的时候,试着找到它们并记住它们。随着时间的推移,您将更好地理解和使用Javascript所提供的功能。您解决了问题吗?在我看来,这是一种非常糟糕的做法。我敢肯定,它可能有它的位置,但当您需要做的只是将处理程序传递给事件时,它就没有位置了。最初的问题是如何调用该函数@user2482616提供了以下解决方案:
selectElem.onchange = myFunction;
function addOption(node, text, value)
{
var option;
option = document.createElement("option");
option.text = text;
option.value = value;
node.appendChild(option);
}
function CreateComboBox(func)
{
var node;
node = document.createElement("select");
addOption(node, "10", 10);
addOption(node, "15", 15);
addOption(node, "20", 20);
addOption(node, "25", 25);
addOption(node, "30", 30);
node.onchange = func;
return node;
}
document.getElementById('ComboArea').appendChild(CreateComboBox(myFunction));