Im使用javascript和jsp动态创建行。当特定单元格中的值发生更改时,将触发onchange事件并给出消息。当在java脚本中使用onchange事件时,首先我尝试直接传递id,
element1.onchange=checkInputValue(element1.id);
onchange事件即使在创建单元格时也会触发。后来我换了
element1.onchange = function(evt){ testInputElement(this.id); };
在"testInputElement"中,调用onchange事件,函数运行良好。这有什么用?为什么我们需要在函数内部传递函数?还有别的办法吗?TIA
onchange
属性允许您指定一个函数,该函数应在元素更改时执行。在第一个示例中,将checkInputValue
的返回值分配给onchange
,元素无法执行该返回值。
您想要做的是分配一个函数,该函数应该在元素发生变化时执行,您在第二个示例中正确地做到了这一点。
如果不想将新函数传递给onchange
,可以修改checkInputValue
以接受更改事件。更改事件包含有关事件起源的信息,包括elemnt。
function handleOnChange(event) {
var id = event.target.id;
// do some stuff
}
// pass a reference to the function, rather than executing it.
// when element1 changes it will call handleOnChange, and pass an
// event object
element1.onchange = handleOnChange;