Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 该函数没有';行不通_Javascript_Events_Arguments - Fatal编程技术网

Javascript 该函数没有';行不通

Javascript 该函数没有';行不通,javascript,events,arguments,Javascript,Events,Arguments,这个代码有问题。当我编写第一个代码时,一切都正常,但经过处理后就不起作用了。为什么会这样?我发送了一个事件对象作为参数,那么问题出在哪里 初始代码: var isOkej = null; function isNumber(someValue) { return !isNaN(someValue); } window.onload = function () { var wykonawca = document.getElementById("informations").art

这个代码有问题。当我编写第一个代码时,一切都正常,但经过处理后就不起作用了。为什么会这样?我发送了一个事件对象作为参数,那么问题出在哪里

初始代码:

var isOkej = null;
function isNumber(someValue) {
    return !isNaN(someValue);
}
window.onload = function () {
    var wykonawca = document.getElementById("informations").artist;
    var tytul = document.getElementById("informations").title;
    var label = document.getElementById("informations").label;
    var kindOftxt = document.getElementById("kindOftxt");

    var action = function (e) {
        //pokazuje unicode wpisanego znaku
        var wpisanyZnak = e.which;
        if (isNumber(this.value) || wpisanyZnak === 190) {
            e.preventDefault();
            if (this === wykonawca)
                kindOftxt.innerHTML = "Podaj swój Alias";
            else if (this === tytul)
                kindOftxt.innerHTML = "Podaj tytuł utworu";
            else
                kindOftxt.innerHTML = "Gdzie utwór został wydany";

            this.style.backgroundColor = "red";
            isOkej = false;
        } else {
            this.style.backgroundColor = "green";
            kindOftxt.innerHTML = "";
            isOkej = true;
        }
    };
    wykonawca.onkeyup = action;
    tytul.onkeyup = action;
    label.onkeyup = action;
}
最终代码:

function isNumber(someValue) {
    return !isNaN(someValue);
}
var isOkej = null;
 function action (e, wykonawca, tytul,kindOftxt) {
        //pokazuje unicode wpisanego znaku
        var wpisanyZnak = e.which;
        if (isNumber(this.value) || wpisanyZnak === 190) {
            e.preventDefault();
            if (this === wykonawca)
                kindOftxt.innerHTML = "Podaj swój Alias";
            else if (this === tytul)
                kindOftxt.innerHTML = "Podaj tytuł utworu";
            else
                kindOftxt.innerHTML = "Gdzie utwór został wydany";

            this.style.backgroundColor = "red";
            isOkej = false;
        } else {
            this.style.backgroundColor = "green";
            kindOftxt.innerHTML = "";
            isOkej = true;
        }
    };

window.onload = function () {
    var wykonawca = document.getElementById("informations").artist;
    var tytul = document.getElementById("informations").title;
    var label = document.getElementById("informations").label;
    var kindOftxt = document.getElementById("kindOftxt"); 

    wykonawca.onkeyup = function (e) {
        action(e, wykonawca,tytul,kindOftxt);
    };    
     tytul.onkeyup = function (e) {
        action(e, wykonawca,tytul,kindOftxt);
    };    
    label.onkeyup = function (e) {
        action(e, wykonawca,tytul,kindOftxt);
    };    }

我真的不知道是什么原因。您认为会有什么问题?

当您使用以下代码绑定事件时,
操作中的
this
函数绑定到输入元素

wykonawca.onkeyup = action;
tytul.onkeyup = action;
label.onkeyup = action;

使用更新的代码绑定事件时

wykonawca.onkeyup = function (e) {
    action(e, wykonawca,tytul,kindOftxt);
};    
tytul.onkeyup = function (e) {
   action(e, wykonawca,tytul,kindOftxt);
};    
label.onkeyup = function (e) {
    action(e, wykonawca,tytul,kindOftxt);
};
匿名事件处理程序中的
this
绑定到输入元素,但在
action
函数中,
this
将引用全局对象,即窗口对象


您可以将
引用作为附加参数从匿名处理程序传递到
操作
函数。

您能更具体地说明这个问题吗?什么不起作用?是否有错误?没有错误,但我的意思是“KindofText”字段不响应输入的信息,并且没有更改color@kamilss15你不应该用isNaN来检查某个东西是否是一个数字。isNaN函数的目的是确定某个内容是否为实际的
NaN
值。在第二种情况下,
函数
action()
中的
值不是您期望的值。它不再引用事件发生的元素。尝试一件事,将您的所有
更改为
e.currentTarget
@EKW,但在初始代码中,一切正常。问题出在最终的代码中