Javascript 保存输入值,以便如果用户保留为空,它将恢复为默认值
我已经尝试创建一个变量Javascript 保存输入值,以便如果用户保留为空,它将恢复为默认值,javascript,for-loop,Javascript,For Loop,我已经尝试创建一个变量oldValue,如果当前值==”,那么它将变回oldValue,因为我使用for循环,我可以显式地说出值是什么 代码正在更改input元素周围的div,这就是为什么存在.parentNode 有谁能告诉我如何获取输入值并保存它,或者我的代码哪里出错了 var inputFocus = function(){ var inputs = document.getElementsByClassName("inputNoFocus"); for (i = 0; i < in
oldValue
,如果当前值==”
,那么它将变回oldValue
,因为我使用for
循环,我可以显式地说出值是什么
代码正在更改input
元素周围的div
,这就是为什么存在.parentNode
有谁能告诉我如何获取输入值并保存它,或者我的代码哪里出错了
var inputFocus = function(){
var inputs = document.getElementsByClassName("inputNoFocus");
for (i = 0; i < inputs.length; i++){
var input = inputs[i];
var oldValue = this.value;
input.addEventListener("focus", function(){
if(this.value === this.value){
this.value = "";
}
this.parentNode.parentNode.setAttribute("class", "inputFocus");
}, false);
input.addEventListener("blur", function(){
if(this.value === ""){
this.value = oldValue;
}
this.parentNode.parentNode.setAttribute("class", "noHover");
}, false);
}
}();
var inputFocus=function(){
var inputs=document.getElementsByClassName(“inputNoFocus”);
对于(i=0;i
我不确定您想做什么,但据我所知——事件侦听器中函数中的this.value的值将返回null
——原因是JavaScript中的作用域。值this.value
的范围将在父函数中,而不是在eventlisters匿名函数中定义的函数中
试着阅读,你会理解作用域以及你可能出错的原因或地方。我不确定你想做什么,但据我所知——事件侦听器中函数中的this.value的值将返回
null
——原因是JavaScript中的作用域。值this.value
的范围将在父函数中,而不是在eventlisters匿名函数中定义的函数中
试着阅读,你会明白范围界定,以及你可能出错的原因或地方。试试以下方法:
(function() {
var inputs = document.getElementsByClassName("inputNoFocus");
function setEmptyVal() {
if (this.value == this.defaultValue) this.value = "";
this.parentNode.parentNode.setAttribute("class", "inputFocus");
}
function setDefaultVal() {
if (this.value == "") this.value = this.defaultValue;
this.parentNode.parentNode.setAttribute("class", "noHover");
}
for (i=0; i<inputs.length; i++) {
var input = inputs[i];
input.defaultValue = input.value;
input.addEventListener("focus", setEmptyVal, false);
input.addEventListener("blur", setDefaultVal, false);
}
})();
(函数(){
var inputs=document.getElementsByClassName(“inputNoFocus”);
函数setEmptyVal(){
如果(this.value==this.defaultValue)this.value=“”;
this.parentNode.parentNode.setAttribute(“类”、“inputFocus”);
}
函数setDefaultVal(){
如果(this.value==“”)this.value=this.defaultValue;
this.parentNode.parentNode.setAttribute(“class”,“noHover”);
}
对于(i=0;i试试这个:
(function() {
var inputs = document.getElementsByClassName("inputNoFocus");
function setEmptyVal() {
if (this.value == this.defaultValue) this.value = "";
this.parentNode.parentNode.setAttribute("class", "inputFocus");
}
function setDefaultVal() {
if (this.value == "") this.value = this.defaultValue;
this.parentNode.parentNode.setAttribute("class", "noHover");
}
for (i=0; i<inputs.length; i++) {
var input = inputs[i];
input.defaultValue = input.value;
input.addEventListener("focus", setEmptyVal, false);
input.addEventListener("blur", setDefaultVal, false);
}
})();
(函数(){
var inputs=document.getElementsByClassName(“inputNoFocus”);
函数setEmptyVal(){
如果(this.value==this.defaultValue)this.value=“”;
this.parentNode.parentNode.setAttribute(“类”、“inputFocus”);
}
函数setDefaultVal(){
如果(this.value==“”)this.value=this.defaultValue;
this.parentNode.parentNode.setAttribute(“class”,“noHover”);
}
对于(i=0;iif(this.value===this.value)
这对你有什么作用?总是TRUE
。this.value===this.value
,这将永远是真的。这不应该是旧值吗?(在你的焦点事件中)我很困惑,因为我需要它来检查所有可能类似“密码”或“用户名”的值如果用户将该值更改为“”,我希望它返回为其默认值,或者如果用户将其更改为“”以外的任何值我希望它保持在用户值上……你的问题之一是你没有以任何有意义的方式存储oldValue
。你需要将它与相应的
相关联。问题的另一部分是你使用这个的方式完全错误。@Tomalak是的,我意识到了这一点,现在我已经解决了它!谢谢你的帮助但是我们的帮助!如果(this.value===this.value)
这对你有什么作用?总是TRUE
。this.value===this.value
,这将永远是真的。这不应该是oldValue吗?(在你的焦点事件中)我很困惑,因为我需要它来检查所有的值,比如“密码”或“用户名”如果用户将该值更改为“”,我希望它返回为其默认值,或者如果用户将其更改为“”以外的任何值我希望它保持在用户值上……你的问题之一是你没有以任何有意义的方式存储oldValue
。你需要将它与相应的
相关联。问题的另一部分是你使用这个的方式完全错误。@Tomalak是的,我意识到了这一点,现在我已经解决了它!谢谢你的帮助我们的帮助!谢谢你帮了我很大的忙!现在开始工作了。谢谢你帮了我很大的忙!现在开始工作了。@jamcoupe一定要花点时间看看它是怎么工作的。@jamcoupe一定要花点时间看看它是怎么工作的。