【发布时间】:2018-10-16 08:53:16
【问题描述】:
我不明白为什么第二个条件不起作用(否则如果在函数内部changeText)。
当我点击它时,它会同时更改我的 clickable1 和 clickable2,而不是分别处理我的每一次点击。
我的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<h1 id="clickable1"> Click me plz </h1>
<h2 id="clickable2"> Click me too plz </h2>
<script>
var text = ["thanks for clicking first", "thanks… but why only second?"];
var index = 0;
var indexId = 0;
document.getElementById("clickable1").addEventListener("click",changeText);
document.getElementById("clickable2").addEventListener("click",changeText);
function changeText(){
if(document.getElementById("clickable1")){
document.getElementById("clickable1").innerHTML = text[0];
}
else if(document.getElementById("clickable2")){
document.getElementById("clickable2").innerHTML = text[1];
}
}
</script>
</head>
<body>
</body>
</html>
【问题讨论】:
-
不要这样做
if(document.getElementById("clickable1")){ document.getElementById("clickable1").innerHTML = text[0];}虽然搜索 ID 并没有那么糟糕,但没有理由在这里浪费 CPU 精力。使用变量,例如:var clickable1 = document.getElementById("clickable1"); if(clickable1){clickable1.innerHTML = text[0];}
标签: javascript dom-events addeventlistener