繁体   English   中英

e.preventDefault()不能在javascript中工作,但可以在jQuery中工作

[英]e.preventDefault() not working in javascript, but working in jQuery

这段代码应该可以正常工作,但是我不知道它在哪里卡住了!

该代码非常简单,并且应该可以正常工作,我认为问题是传递的第三个参数(“ 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>

您对innerHTML和div Reveal的id有问题

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

问候。

尝试这个,

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

因为innerHTML是属性而不是函数。 另外,您的代码中有错别字,“显示”是DIV的ID。

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

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/zh-CN/docs/Web/JavaScript/Reference/Operators/Property_Accessors

请尝试添加点击事件,而不是mouseup。

<!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>

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

返回 innerHTML属性: HTMLElementObject.innerHTML

设置 innerHTML属性: HTMLElementObject.innerHTML=text

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

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

e.preventDefault不会阻止mouseupmousedown 检查答案。 您必须使用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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM