2012-08-08 55 views
2

我有一个html元素,它假设调用3个JS函数作为onchange事件,但是;它只会触发第一个功能。我很难理解为什么它没有这样做。JavaScript多个事件不能触发

<select id="dlist" onChange="func1(); func1(); func3()"/> 

func1 = function(){ 
//code 
} 

func3 = function(){ 
//code 
} 

func2 = function(){ 
//code 
} 

这个问题可能是什么?

+0

的Java = JavaScript的 – 2012-08-08 14:01:05

+0

对我的作品罚款:http://jsfiddle.net/BjbDg/。它调用'func1'和'func3',就像你在属性中一样(注意,你调用'func1' **两次**)。 – 2012-08-08 14:04:31

+0

其他方法未被调用的一个原因可能是你在'func1'中有一个错误,它会终止执行。但这只是猜测。正如你在我的例子中看到的那样,如果我在你发布它的代码时,它会调用函数。 – 2012-08-08 14:19:09

回答

3
<select id="dlist" "onChange=func1(); func1(); func3()"/> 

您正在将整个属性包裹在引号中。 想要

<select id="dlist" onChange="func1(); func1(); func3()"/> 
+0

我把它放在了错误的地方,这就是它的样子 – MasterP 2012-08-08 14:03:17

1

尝试onChange="func1(); func1(); func3()"

移动报价。

+0

它不起作用 – MasterP 2012-08-08 14:03:41

-1

你可以试试这个

var slt= document.getElementById('dlist').onchange= func1; func1;func3 

var slt= document.getElementById('dlist').onchange= myAll; 


function myAll(){ 

func1(); 
func2(); 
func3(); 

} 
+0

这是完全错误的,它将'func1'的返回值赋给'.onchange'。 – 2012-08-08 14:05:26

+0

现在将分配'func3 'to'.onchange' ...稍微好一些,但是只有当事件被触发时才会调用func3,而不是所有三个函数。*再次编辑:*这会将'func1'分配给'.onchange',所以只有当触发事件时会调用func1(参见第一个代码片段) – 2012-08-08 14:10:41

+0

那么正确的方法是什么? – Carlos 2012-08-08 14:15:43