Javascript onClick函数导致在Chrome上刷新

Javascript onClick函数导致在Chrome上刷新,javascript,html,google-chrome,Javascript,Html,Google Chrome,我在Chrome上遇到了一个非常奇怪的行为。当我单击add(添加)按钮时,以下代码会导致页面在Chrome上刷新,这不是我希望它执行的操作: function addSpamAddr() { var email = prompt("Add Spam Address",""); if (email == null || email == "") return false; var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.

我在Chrome上遇到了一个非常奇怪的行为。当我单击add(添加)按钮时,以下代码会导致页面在Chrome上刷新,这不是我希望它执行的操作:

function addSpamAddr() 
{
    var email = prompt("Add Spam Address","");
    if (email == null || email == "")
        return false;

    var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    if (regex.test(email) == false) {
        alert("You must enter a valid E-Mail address");
        return false;
    }


    var listBox = document.getElementById('spamList');
    for (var x = 0; x < listBox.options.length; x++) {
        if (listBox.options[x].value == email || listBox.options[x].text == email) {
            alert("Already blocked address");
            return false;
        }
    }

    var selectBoxOption = document.createElement("option");
    selectBoxOption.value = email;
    selectBoxOption.text = email;
    listBox.add(selectBoxOption);

    return false;
}


...
<button style="margin-right: 20px;width:60px" onclick="addSpamAddr()">Add</button>
函数addSpamAddr()
{
var email=prompt(“添加垃圾邮件地址”);
如果(email==null | | email==“”)
返回false;
var regex=/^[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\[a-zA-Z]{2,4}$/;
if(正则表达式测试(电子邮件)=false){
警报(“您必须输入有效的电子邮件地址”);
返回false;
}
var listBox=document.getElementById('spamList');
对于(var x=0;x
该代码在InternetExplorer上运行良好。我创建了一个简单的示例来进一步调查这个问题:

function addSpamAddr()
{
   return false;
}
...
<button style="margin-right: 20px;width:60px" onclick="addSpamAddr()">Add</button>
函数addSpamAddr()
{
返回false;
}
...
添加
仍然会导致在Chrome上刷新

如何防止刷新

编辑:在onclick事件中添加return语句后,页面不再刷新我创建的最小示例

<button style="margin-right: 20px;width:60px" onclick="return addSpamAddr()">Add</button>
添加
但是,如果我应用原始代码,页面仍然会刷新。特别是,这一部分导致:

    var listBox = document.getElementById('spamList');
    var exists = false;
    for (var x = 0; x < listBox.options.length; x++) {
        if (listBox.options[x].value == email || listBox.options[x].text == email) {
            alert("Already blocked address");
            return false;
        }
    }
var listBox=document.getElementById('spamList');
var=false;
对于(var x=0;x
我如何解决这个问题?

这样写

function addSpamAddr()
{
   return false;
}
...
<button style="margin-right: 20px;width:60px" onclick="return addSpamAddr()">Add</button>
函数addSpamAddr()
{
返回false;
}
...
添加

您需要在html代码中编写
“return addSpamAddr()”
,该代码由我更新

谢谢您的建议。这解决了我的一部分问题,但如果我应用原始代码,刷新部分仍然不会消失。如果你能看看编辑过的部分,我会很感激它是表单中的按钮元素?哦,好的,看看,按钮和表单可能有点奇怪。停止此操作的一种方法是将事件arg添加到
addSpamAddr
(例如
addSpamAddr(e){…}
),然后调用
e.preventDefault()
停止表单提交。不确定这是否解决了您的问题,但我记得在这种情况下,chrome有一些有趣的角落案例。您是否尝试过像这样指定按钮类型
Add
?每个浏览器都使用不同的默认按钮类型,因此最好指定它…@CrisimIlNumenoreano哇,添加该类型会阻止页面刷新,但现在我遇到了一个不同的问题:代码无法按预期工作。同样,这种行为只在chrome上出现。没关系,一切都解决了!谢谢你的帮助!!!!