为什么我的第一次点击时没有触发我的javascript onclick事件?

时间:2015-06-28 11:45:44

标签: javascript jquery

我有一个我点击的div元素,它应该触发检查元素的当前innerHTML值,然后匹配条件并进行更改。

是脚本相对于元素位置的位置还是关于加载?该脚本位于元素上方,但它适用于第二次和后续点击(交替未显示)。

innerHTML在第一次点击时不会发生变化,但是在第一次点击时会隐藏其他事件。

HTML

<div id="element" onclick="changeHim();">Change me upon click.</div>

脚本

function changeHim() {
var currentLabel = document.getElementById("element");
if(currentLabel=="Change me upon click"){
document.getElementById("element").innerHTML="You have been changed.";
}

}

5 个答案:

答案 0 :(得分:2)

getElementById的结果是DOM元素而不是div的内容 声明

if (currentLabel == "change me upon click")

绝不是true

答案 1 :(得分:1)

你需要检查innerHTML:

if(currentLabel.innerHTML=="Change me upon click"){

另外,修复功能缺失的右括号}

答案 2 :(得分:1)

错误号1。

你应该声明

var currentLabel = document.getElementById("element").innerHTML

而不是

var currentLabel = document.getElementById("element");

错误号2。

缺少功能关闭支架}

错误3号。

使用

if(currentLabel=="Change me upon click."){

而不是

if(currentLabel=="Change me upon click"){

因为(innterHTML)文本中缺少一个DOT(。)

更正后的FULL代码(已测试)如下所示

<script>
  function changeHim() {
    var currentLabel = document.getElementById("element").innerHTML;
    if(currentLabel=="Change me upon click."){
      document.getElementById("element").innerHTML="You have been changed.";
      }
    }
</script>

<div id="element" onclick="changeHim();">Change me upon click.</div>

答案 3 :(得分:1)

要将文本标签提取为:

var currentLabel = document.getElementById("element").textContent;

var currentLabel = document.getElementById("element").innerHtml;

答案 4 :(得分:1)

您的child = function (byref) { parent_class.call(this, byref); } child.prototype = Object.create(parent_class.prototype); child.prototype.child_func = parent_class.prototype.parent_func; child.prototype._vtbl = true; 语句导致的问题应该是if

if (currentLabel.innerHTML == "Change me upon click.")
function changeHim() {
    var currentLabel = document.getElementById("element");
    if (currentLabel.innerHTML == "Change me upon click.") {
        document.getElementById("element").innerHTML = "You have been changed.";
    }
}