Javascript setAttribute、onclick、eventListener赢得';行不通
因此,我用javascript编写了这段代码,它将替换html中的文本,具体取决于您单击的语言(罗马尼亚语或英语,默认为罗马尼亚语)。我尝试了我所知道的3种点击方式,但都不起作用。你能帮帮我吗?Javascript setAttribute、onclick、eventListener赢得';行不通,javascript,onclick,addeventlistener,setattribute,Javascript,Onclick,Addeventlistener,Setattribute,因此,我用javascript编写了这段代码,它将替换html中的文本,具体取决于您单击的语言(罗马尼亚语或英语,默认为罗马尼亚语)。我尝试了我所知道的3种点击方式,但都不起作用。你能帮帮我吗? 编辑: 前两条指令根本不起作用(什么都没有发生,即使单击它们也不会发生)。然后,最后一对bouth夫妇在onload上执行(但单击他们之后不工作)。我发现将addEventListener与listener函数一起使用除了事件本身以外的其他参数不起作用,但我仍然对其他方法感到困惑 网站 英语 罗马尼
编辑:
前两条指令根本不起作用(什么都没有发生,即使单击它们也不会发生)。然后,最后一对bouth夫妇在onload上执行(但单击他们之后不工作)。我发现将addEventListener与listener函数一起使用除了事件本身以外的其他参数不起作用,但我仍然对其他方法感到困惑
网站
英语
罗马尼亚语
比娜·艾维尼特·佩斯·乌尔·缪!
setItem(“languageStored”、“romanian”);
变量语言={
英语:{
欢迎:“欢迎光临我的网站!”
},
ro:{
欢迎光临:“比纳艾维尼体育网站ul meu!”
}
};
window.onload=函数()
{
让optEngl=document.getElementById('english');
让optRo=document.getElementById('romanian');
//setAttribute('click','languageChange(this,optRo');
//setAttribute('click','languageChange(this,optEngl');
//optEngl.onclick=语言变化(this,optEngl);
//optRo.onclick=语言变化(this,optRo);
//addEventListener(“单击”,语言更改(this,optEngl));
//addEventListener(“单击”,语言更改(this,optRo));
}
函数语言更改(e,obj)
{
让languageStored=localStorage.getItem(“languageStored”);
if(languageStored!=对象id)
{
控制台日志(对象id);
languageStored=obj.id;
setItem(“languageStored”,languageStored);
如果(语言存储==“英语”)
document.getElementById(“段落”).textContent=language.eng.welcome;
其他的
document.getElementById(“段落”).textContent=language.ro.welcome;
}
}
```
将回调作为第二个参数,因此在添加函数时不需要()
此外,您可以在回调函数中使用this
来引用事件触发的元素-这只是稍微清理了函数代码-您不需要在languageChange
函数中包含任何参数
LocalStorage无法处理此站点上的代码段,因此我编写了一个快速的
localStorage.setItem(“languageStored”、“romanian”);
变量语言={
英格:{欢迎光临我的网站!},
ro:{欢迎光临:“我的威尼斯之家!”
};
window.onload=函数(){
让optEngl=document.getElementById('english');
让optRo=document.getElementById('romanian');
optEngl.addEventListener('click',languageChange);
optRo.addEventListener('click',languageChange);
}
函数语言更改(){
//获取存储的语言
让languageStored=localStorage.getItem(“languageStored”);
//您可以使用'this'而不是'obj'来引用单击的元素
if(languageStored!=此.id){
languageStored=this.id;
setItem(“languageStored”,languageStored);
如果(语言存储==“英语”)
document.getElementById(“段落”).textContent=language.eng.welcome;
其他的
document.getElementById(“段落”).textContent=language.ro.welcome;
}
}
}
我对您的代码做了几处更改。首先,我认为您可以直接从标记调用函数,而不需要窗口。onload
。我在代码中发现的一个问题是,当您发送optEngl
时,您只是作为optEngl
发送,没有任何引号,这让js认为它不是字符串。然后,我使用localeCompare
而不是=
修改了languageChange
函数中的字符串比较。然后,它工作得很好。我希望这有帮助
<html lang="en">
<head>
<title>
Website
</title>
<meta charset="UTF-8">
</head>
<body>
<a id='english' onClick="languageChange(this , 'optEngl');">English</a>
<a id='romanian' onClick="languageChange(this , 'optRo');">Romanian</a>
<p id="paragraph">
Bine ai venit pe site-ul meu!
</p>
<script type="text/javascript">
localStorage.setItem("languageStored", "romanian");
var language = {
eng: {
welcome: "Welcome to my website!"
},
ro: {
welcome: "Bine ai venit pe site-ul meu!"
}
};
function languageChange(e, obj) {
let languageStored = localStorage.getItem("languageStored");
if (languageStored != obj) {
localStorage.setItem("languageStored", obj);
if (languageStored.localeCompare("optEngl")) {
document.getElementById('paragraph').textContent = language.eng.welcome;
} else {
document.getElementById('paragraph').textContent = language.ro.welcome;
}
}
}
</script>
</body>
</html>
网站
片段
通过使用javascript:
<html lang="en">
<head>
<title>
Website
</title>
<meta charset="UTF-8">
</head>
<body>
<a id='english'>English</a>
<a id='romanian'>Romanian</a>
<p id="paragraph">
Bine ai venit pe site-ul meu!
</p>
<script type="text/javascript">
localStorage.setItem("languageStored", "romanian");
var language = {
eng: {
welcome: "Welcome to my website!"
},
ro: {
welcome: "Bine ai venit pe site-ul meu!"
}
};
window.onload = function() {
let optEngl = document.getElementById('english');
let optRo = document.getElementById('romanian');
optEngl.onclick = function() {
languageChange(this, "optEngl");
}
optRo.onclick = function() {
languageChange(this, "optRo");
}
}
function languageChange(e, obj) {
let languageStored = localStorage.getItem("languageStored");
if (languageStored != obj) {
localStorage.setItem("languageStored", obj);
if (languageStored.localeCompare("optEngl")) {
document.getElementById('paragraph').textContent = language.eng.welcome;
} else {
document.getElementById('paragraph').textContent = language.ro.welcome;
}
}
}
</script>
</body>
</html>
网站
英语
罗马尼亚语
比娜·艾维尼特·佩斯·乌尔·缪!
setItem(“languageStored”、“romanian”);
变量语言={
英语:{
欢迎:“欢迎光临我的网站!”
},
ro:{
欢迎光临:“比纳艾维尼体育网站ul meu!”
}
};
window.onload=函数(){
让optEngl=document.getElementById('english');
让optRo=document.getElementById('romanian');
optEngl.onclick=函数(){
语言变化(本“optEngl”);
}
optRo.onclick=函数(){
语言变化(本“optRo”);
}
}
函数语言更改(e,obj){
让languageStored=localStorage.getItem(“languageStored”);
if(语言存储!=obj){
setItem(“languageStored”,obj);
if(languageStored.localeCompare(“optEngl”)){
document.getElementById(“段落”).textContent=language.eng.welcome;
}否则{
document.getElementById(“段落”).textContent=language.ro.welcome;
}
}
}
“…但它们都不起作用”-“错误描述”毫无意义。会发生什么?应该怎么办?控制台中有错误吗?如果是,请发布准确的错误消息。您已经尝试过解决或调试这个问题了吗?您是否检查过有关这些方法的文档?喜欢
<html lang="en">
<head>
<title>
Website
</title>
<meta charset="UTF-8">
</head>
<body>
<a id='english'>English</a>
<a id='romanian'>Romanian</a>
<p id="paragraph">
Bine ai venit pe site-ul meu!
</p>
<script type="text/javascript">
localStorage.setItem("languageStored", "romanian");
var language = {
eng: {
welcome: "Welcome to my website!"
},
ro: {
welcome: "Bine ai venit pe site-ul meu!"
}
};
window.onload = function() {
let optEngl = document.getElementById('english');
let optRo = document.getElementById('romanian');
optEngl.onclick = function() {
languageChange(this, "optEngl");
}
optRo.onclick = function() {
languageChange(this, "optRo");
}
}
function languageChange(e, obj) {
let languageStored = localStorage.getItem("languageStored");
if (languageStored != obj) {
localStorage.setItem("languageStored", obj);
if (languageStored.localeCompare("optEngl")) {
document.getElementById('paragraph').textContent = language.eng.welcome;
} else {
document.getElementById('paragraph').textContent = language.ro.welcome;
}
}
}
</script>
</body>
</html>