Javascript onChange下拉列表
我试图在更改HTML Select时调用javascript函数 HTML文档: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
<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解决方案,但如果你使用它,生活会轻松很多:-)非常感谢!我会考虑使用它!