1

我正在处理的 javascipt 函数存在一些问题。

这是我试图用这个函数做的事情:

我有一个具有给定值的表格元素,当单击它时,它会调用我的 javasript 函数,该函数应该使用元素的值 appendChild 一个 INPUT 元素,因此用户可以更改该值。我希望 INPUT 元素调用onblur()事件的函数,因此修改后的值可以再次显示在 table 元素上。

我的问题是该元素不尊重该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()

有谁知道为什么会这样???

4

2 回答 2

4

您的问题是:child.onblur = blurPrueba(),您blurPrueba立即执行的地方。应该是参考:child.onblur = blurPrueba

换行,您告诉浏览器:“在子元素模糊时,激活blurPrueba功能”。

如果您使用blurPrueba()您激活该功能并将其结果分配给模糊事件,blurPrueba()则不会返回任何内容。所以你的台词实际上说:“ onblur = undefined

总之,如果您希望浏览器处理事件(此处blur),您需要提供对处理函数的引用blurPrueba(此处)。

于 2012-01-09T19:27:32.430 回答
1

改变

child.onblur = blurPrueba();

child.onblur = function(){blurPrueba()};

于 2012-01-09T20:04:50.683 回答