2015-03-31 114 views
0

我使用JavaScript和jsp动态创建行。当特定单元格中的值发生更改时,onchange事件将被触发,并且会发出消息。 当Java脚本使用了onchange事件,首先我想直接通过ID,小区被创建时动态添加行onchange事件javascript

element1.onchange=checkInputValue(element1.id); 

onchange事件甚至被解雇。后来,当我改

element1.onchange = function(evt){ testInputElement(this.id); }; 

和内部“testInputElement”,onchange事件被称为和功能正常工作。这有什么用处?为什么我们需要在函数内部传递函数? 还有别的办法吗? TIA

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures – epascarello 2015-03-31 12:50:14

回答

1

onchange属性允许您指定一个函数,该函数在元素更改时应该执行。在第一个示例中,将checkInputValue的返回值分配给onchange,该元素无法执行。

你想要做的是分配一个函数,当elemnent发生变化时应该执行该函数,在第二个例子中你正确地做了这些。

如果您不想将新功能传递给onchange,则可以改为修改checkInputValue以接受change event。更改事件包含有关事件发生地点的信息,包括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;