Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 onChange下拉列表_Javascript_Html - Fatal编程技术网

Javascript onChange下拉列表

Javascript onChange下拉列表,javascript,html,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"); v

我试图在更改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>

网络1
网络2
警报(“测试”);
var URLArray=[];
功能测试(str){
警报(“测试”);
}
我得到了第一个警报,但没有第二个。我错过了什么


编辑:代码实际上是可以工作的,但是出于任何原因,我不能在JSFIDLE中使用单独的窗格。有什么想法吗?

您的脚本还可以,您只需为两个
警报设置相同的值(“测试”)

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

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

<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>

警报(“测试”);
var URLArray=[];
功能测试(str){
警报(“测试”);
}
网络1
网络2

正如您所看到的,我将javascript设置为放在标题中。

正如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>

网络1
网络2
console.log(“test1”)
var URLArray=[];
功能测试(str){
console.log(“test2”);
}

当JSFIDLE运行您的代码时,它会将代码封装在一个闭包中,如下所示:

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
}//]]>  
</script>
<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"); 
    });
});
//
因此,您定义的“test”函数永远不能作为全局函数使用,因此您放置在select标记上的内联javascript无法访问它

我强烈建议您学习使用jQuery来附加事件处理程序,如下所示:

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
}//]]>  
</script>
<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
网络2
$(函数(){
log(“哦,看,文档准备好了”);
$(“[name=network]”)。更改(函数(){
log(“现在我的代码是groovy,但我可能希望使用id而不是名称选择器”);
});
});

对我来说效果很好:我也在使用JSFIDLE,但我把它们放在了单独的框中。我想这是不对的?我认为这是JSFIDLE告诉您不要使用全局函数的方式;-)JSFIDLE没有将您的函数测试放在“窗口”上,这很好,它只会打印“测试”两次。“我的代码实际上可以工作,我认为在JSFIDLE中使用单独的窗格是我的致命伤。jQuery是标准的,还是我必须安装额外的东西?(很抱歉,对于这样一个基本的问题,我对web开发非常陌生)@Jeff这是一个javascript库,现在几乎每个从事web开发的人都在使用它。你不必使用它,有纯javascript解决方案,但如果你使用它,生活会轻松很多:-)非常感谢!我会考虑使用它!