e.preventDefault()不能在javascript中工作,而是在jQuery中工作

时间:2014-09-17 07:00:43

标签: javascript jquery

此代码应该可以正常工作,但我不知道它会被卡住的地方!

这段代码非常简单,它应该可以工作,我认为问题是传递的第3个参数(" mouseup",function(){},false)

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
</head>
<body>
<a id="navlink" href="http://google.com">Click me</a>
<div id="Reveal">Not Clicked</div>
<script>
    document.getElementById('navlink').addEventListener("mouseup" , function(e){
        e.preventDefault();
        document.getElementById('reveal').innerHTML("Clicked");
    },false);
</script>

</body>
</html>

6 个答案:

答案 0 :(得分:1)

你有关于innerHTML和 div Reveal

的id的问题
document.getElementById('navlink').addEventListener("mouseup" , function(e){
    e.preventDefault();
    document.getElementById('Reveal').innerHTML = "Clicked";
},false);

问候。

答案 1 :(得分:0)

试试这个,

document.getElementById('reveal').innerHTML = "Clicked";

因为innerHTML属性不是函数。 你的代码中也有拼写错误,'Reveal'是DIV的ID。

答案 2 :(得分:0)

您需要进行以下更正,请参阅下面的代码段

1) .innerHtml不是方法,属性,因此您必须使用=

2) getElementById区分大小写,因此document.getElementById('reveal')必须为document.getElementById('Reveal')

document.getElementById('navlink').addEventListener("mouseup" , function(e){
        e.preventDefault();
        document.getElementById('Reveal').innerHTML = "Clicked";
    },false);
<a id="navlink" href="http://google.com">Click me</a>
<div id="Reveal">Not Clicked</div>

参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

答案 3 :(得分:0)

请尝试添加点击事件而不是鼠标。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>html demo</title>
  </head>
  <body>
    <a id="navlink" href="http://google.com">Click me</a>
      <div id="Reveal">Not Clicked</div>
    <script>
      document.getElementById('navlink').addEventListener("click" , function(e){
      e.preventDefault();
      //document.getElementById('reveal').innerHTML("Clicked");
      },false);
    </script>
</body>
</html>

答案 4 :(得分:0)

innerHTML属性,而不是mutator方法。语法如下:

返回 innerHTML属性: HTMLElementObject.innerHTML

设置 innerHTML属性: HTMLElementObject.innerHTML=text

在您的情况下,它应该是:document.getElementById('reveal').innerHTML = "Clicked";

此外,addEventListener的最后一个参数是可选的。它是一个布尔值,指定是在捕获阶段还是在冒泡阶段执行事件。

答案 5 :(得分:0)

e.preventDefault不会阻止mouseupmousedown。检查this回答。您必须使用click()addEventListener("click",才能使用preventDefault

实施例: document.getElementById('navlink').addEventListener("click" , function(e){

在您的代码中,您错误地将innerHTML用作函数而reveal具有大写R,因此更正后的形式为

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
</head>
<body>
<a id="navlink" href="http://google.com">Click me</a>
<div id="Reveal">Not Clicked</div>
<script>
    document.getElementById('navlink').addEventListener("click" , function(e){
        e.preventDefault();
        document.getElementById('Reveal').innerHTML = "Clicked";
    },false);
</script>

</body>
</html>