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,但在初始代码中,一切正常。问题出在最终的代码中