我刚刚练习一些 JavaScript,遇到了一个无法解决的错误。我的 html 中有一个列表,其中每个项目都链接到一个页面,但是
我的 js 脚本中有一个函数,当我单击该项目时,它应该从列表中删除该项目,我尝试使用 preventDefault()
但它仍然将我带到该链接。
<ul id="shoppingList">
<li class="complete"><a href="google.com><em>fresh</em>tuna</a></li>
<li class="complete"><a href="google.com">meatball</a></li>
<li class="complete"><a href="google.com">kiwi</a></li>
<li class="complete"><a href="google.com">chicken soup</a></li>
</ul>
function getTarget(e){
if(!e){
e = window.event;
}
return e.target || e.srcElement;}
function itemDone(e){
//Remove item from the list
var target;
var Parent;
var Grandparent;
target = getTarget(e);
Parent = target.parentNode;
Grandparent = target.parentNode.parentNode;
Grandparent.removeChild(Parent);
//Prevent the link from taking you somewhere
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue = false;
}
}
//Set up event listeners to call ItemDone() on click
var Shoppo = document.getElementById('shoppingList');
if(Shoppo.addEventListener){
Shoppo.addEventListener('click',function(e){
itemDone(e);
},flase);
}else{
Shoppo.attachEvent('onClick',function(e){
itemDone(e);
});
}
最佳答案
要检查是否调用了 e.preventDefault()
,您可以使用 isDefaultPrevented
返回 true 或 false。所以你可以像这样改变你的代码,
e.preventDefault();
if(e.isDefaultPrevented()){
// default event is prevented
}else{
e.returnValue = false;
}
关于Javascript防止默认操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686936/