不工作我的javascript onblur功能

时间:2012-01-09 19:14:34

标签: javascript html onblur appendchild

我正在使用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()

有谁知道为什么会这样?

2 个答案:

答案 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()};