Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态创建的组合框不工作_Javascript - Fatal编程技术网

Javascript 动态创建的组合框不工作

Javascript 动态创建的组合框不工作,javascript,Javascript,我使用javascript动态创建combobox 这是密码器!!!: 在创建combobox之后,如果我从创建的combobox中选择一个元素,那么我需要myFunction 被激发。但它不起作用,函数myFunction没有激发任何想法为什么?我做错了什么?您可能希望使用由变量引用的匿名函数的概念: var myFunction = function () { alert('HELLO!'); } 它比通过字符串传递变量名稍微快一些。可以这样称呼它: selectElem.onch

我使用javascript动态创建combobox

这是密码器!!!:

在创建combobox之后,如果我从创建的combobox中选择一个元素,那么我需要myFunction
被激发。但它不起作用,函数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));