我正在使用javascipt函数遇到一些问题。
以下是我尝试使用该功能的内容:
我有一个具有给定值的表元素,当点击它时,它调用我的javasript函数,该函数为appendChild提供一个带元素值的INPUT元素,因此用户可以更改该值。我希望INPUT元素调用onblur()
事件的函数,因此可以在表元素上再次显示修改后的值。
我的问题是该元素不尊重onblur()
事件。该函数在创建Input元素后立即执行,并且不等待成为onblur()
事件。
以下是两个函数的代码:
var elemento = true;
function prueba(clave,cantidad) {
if(elemento){
var percent = document.getElementById('porciento' + clave);
percent.innerHTML = "";
var input = document.createElement("input");
input.setAttribute('type','text');
input.setAttribute('size','5');
input.setAttribute('value',cantidad);
input.setAttribute('id','child'+clave);
percent.appendChild(input);
input.focus();
child = document.getElementById("child" + clave);
child.onblur = blurPrueba();
}
}
function blurPrueba() {
if(elemento)
alert("Hello");
}
显示警报而不是onblur()
有谁知道为什么会这样?
答案 0 :(得分:4)
您的问题是:child.onblur = blurPrueba()
,您可以立即执行blurPrueba
。应该是参考:child.onblur = blurPrueba
更改该行,您告诉浏览器:"关于子元素的模糊,激活blurPrueba
功能"。
如果您使用blurPrueba()
激活该功能并将其分配给模糊事件,则blurPrueba()
不会返回任何内容。所以你的行实际上说:" onblur = undefined
"
总之,如果您希望浏览器处理事件(此处为blur
),则需要向处理函数(此处为blurPrueba
)提供引用。< / p>
答案 1 :(得分:1)
更改
child.onblur = blurPrueba();
到
child.onblur = function(){blurPrueba()};