我使用javascript和jsp动态创建行。当特定单元格中的值发生更改时,将触发onchange事件并给出消息。 当在java脚本中使用onchange事件时,首先我尝试直接传递id,
element1.onchange=checkInputValue(element1.id);
即使在创建单元格时也会触发onchange事件。后来当我改为
element1.onchange = function(evt){ testInputElement(this.id); };
和内部" testInputElement",调用onchange事件并且函数正常工作。有什么用?为什么我们需要在函数内部传递函数? 还有其他方法吗? TIA
答案 0 :(得分:1)
onchange
属性允许您指定在该元素更改时应执行的函数。在第一个示例中,您将checkInputValue
的返回值分配给onchange
,该元素无法执行。
你想要做的是分配一个应该在元素改变时执行的函数,你在第二个例子中正确地做了。
如果您不想将新功能传递给onchange
,则可以修改checkInputValue
以接受change event。 change事件包含有关事件源自何处的信息,包括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;