Javascript onChange下拉列表

时间:2013-03-14 19:55:13

标签: javascript html

我正在尝试调用HTML Select函数的一个javascript函数。

HTML文档:

<select name="network" onChange="test(this)">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>
<script>
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
</script>

我得到第一个警报,但不是第二个警报。我错过了什么?

编辑:代码实际上有效,但无论出于何种原因,我都无法在JSFiddle中使用单独的窗格。有什么想法?

4 个答案:

答案 0 :(得分:2)

当jsFiddle运行你的代码时,它将它包装在一个这样的闭包中:

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
}//]]>  
</script>

因此,您定义的“test”函数永远不会作为全局函数使用,因此无法通过您在select标记上放置的内联javascript访问。

我强烈建议你学习使用jQuery来附加你的事件处理程序:

<select name="network">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>

$(function () {
    console.log("oh look, the document is ready");

    $("[name=network]").change(function () {
        console.log("now my code is groovy, but i might want to use an id rather than name selector"); 
    });
});

答案 1 :(得分:0)

您的脚本没问题,您只需为alert添加相同的值(“测试”)。

<script>
    alert("test1");
    var URLArray = [];
    function test(str){
        alert("test2");
    }
</script>

或者也许最终的目标是......

function test(elm){
    alert(elm.value);
}

答案 2 :(得分:0)

尝试将您的脚本移动到第一次调用之上,如下所示:

<script>
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
</script>


<select name="network" onChange="test(this)">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>

这是jsfiddle,如您所见,我将javascript设置在标题中。

答案 3 :(得分:0)

正如Panayot所说,您的代码没问题,但我宁愿使用console.log()代替alert。在控制台上查看比跟踪警报要容易得多。

<select name="network" onChange="test(this)">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>
<script>
    console.log("test1")
    var URLArray = [];
    function test(str){
        console.log("test2");
    }
</script>