Javascript 点击功能";创造;调试器中的新html文档是无意中创建的

Javascript 点击功能";创造;调试器中的新html文档是无意中创建的,javascript,html,Javascript,Html,当我选择了一个输入字段并单击按钮更改占位符/onblur保持器时,会发生一件奇怪的事情。当我在浏览器中查看F12工具时,会创建一个新的HTML源文档,在单击按钮更改占位符后,该文档仅包含先前选择的占位符 例如,如果我选择输入字段“First Name”,并且我当前选择的语言是英语,在单击将onblur占位符更改为意大利语的按钮后,HTML文档仅包含onblur函数中设置的英语名字,而不包含任何其他内容(无HTML、无正文、无任何内容…) 为什么会这样,又是如何发生的?我怎样才能防止这种情况发生

当我选择了一个输入字段并单击按钮更改占位符/onblur保持器时,会发生一件奇怪的事情。当我在浏览器中查看F12工具时,会创建一个新的HTML源文档,在单击按钮更改占位符后,该文档仅包含先前选择的占位符

例如,如果我选择输入字段“First Name”,并且我当前选择的语言是英语,在单击将onblur占位符更改为意大利语的按钮后,HTML文档仅包含onblur函数中设置的英语名字,而不包含任何其他内容(无HTML、无正文、无任何内容…)

为什么会这样,又是如何发生的?我怎样才能防止这种情况发生

您可以使用此代码重现问题

1.)打开F12工具

2.)选择任何输入字段

3.)单击任何按钮

让fname=document.getElementById(“fname”);	
让lname=document.getElementById(“lname”);	
让email=document.getElementById(“email”);	
常量占位符={
sl:{fname:“Janez”,lname:“Novak”,电子邮件:moj@email.si" },
en:{fname:“John”,lname:“Doe”,电子邮件:my@email.us" }, 
de:{fname:“Kommissar”,lname:“Rex”,电子邮件:mein@email.deu" },
它:{fname:“Julius”,lname:“Cezar”,email:barilla@email.it"},
hr:{fname:“Mirko”,lname:“Mirkic”,电子邮件:moj@email.hr"},
ru:{fname:“约瑟夫”,lname:“列宁”,电子邮件:moji@email.ru"}
}; 
常数={
sl:{fname:“Janez”,lname:“Novak”,电子邮件:moj@email.si" },
en:{fname:“John”,lname:“Doe”,电子邮件:my@email.us" }, 
de:{fname:“Kommissar”,lname:“Rex”,电子邮件:mein@email.deu" },
它:{fname:“Julius”,lname:“Cezar”,email:barilla@email.it"},
hr:{fname:“Mirko”,lname:“Mirkic”,电子邮件:moj@email.hr"},
ru:{fname:“约瑟夫”,lname:“列宁”,电子邮件:moji@email.ru"}
};
函数集输入(语言){
if(Object.keys(占位符).includes(语言)){
常量值=占位符[语言];
setAttribute(“占位符”,values.fname);
setAttribute(“占位符”,values.lname);
setAttribute(“占位符”,values.email);
}
}
函数setOnBlurs(语言){
if(对象键(模糊持有者)。包括(语言)){
const valuesB=模糊持有者[语言];
setAttribute(“onblur”,valuesB.fname);
lname.setAttribute(“onblur”,valuesB.lname);
setAttribute(“onblur”,valuesB.email);
}
}




尽管我无法重现您的开发人员工具问题,但您的代码中有一个错误,可能会给您带来一些混乱

与占位符不同,
onblur
属性只能包含函数名,不能包含文字字符串

onblur=“Janez”
抛出错误,因为浏览器正在查找名为Janez的函数

您不需要重置占位符的值。如果字段模糊时为空,则将再次显示占位符

以下属性对于您的输入应该足够了

就按钮而言,我认为
setOnBlurs
毫无意义


问题1:“选择任何输入字段”是什么意思?问题2:您使用的是什么浏览器?我无法使用chrome1重现该问题。选择firstname、lastname或email(在字段内单击,好像要键入您的姓名/lastname/email)。2.我也在使用chrome。谢谢你的解释。我不知道。那么如何更改onblur值?如果有人将语言(单击按钮)更改为英语,我希望onblur value更改为ie.John(当前,如果有人单击字段,不在其中写入任何内容,然后单击其他位置,则返回默认Janez)@DrDoom-正如我在回答中所述,如果字段失去焦点时为空,那么占位符就足够了。所以,只要在语言改变时不断地改变占位符,你就会没事了。事实并非如此。如果查看代码,
onblur
值被硬编码为ie.Janez,Novak。一旦用户在该字段外单击(该字段仍然为空),该值将变回ie。Janez将
onblur
设置为该值。@DrDoom-Nope,这是因为
占位符属性。
onblur
属性是一个不能包含字符串的HTML硬编码事件处理程序。就像
onclick
。查看这篇文章:只是为了澄清一下。您是说不能使用JS更改
onblur
的值?