1

我研究这个问题已经有一段时间了,鉴于 Google Chrome 似乎在 Javascript 上存在大量问题,我一直很难找到有同样问题的人。

问题是这样的:当锚点调用一个替换 div 内容的新函数时,它会暂时显示正确的结果,然后在 Javascript 进行任何更改之前恢复为 div 的默认内容。

这是脚本:

function prologueThree() {
    document.getElementById('content').innerHTML = document.getElementById('prologue3').innerHTML;
}

function prologueFour() {
    userName = document.getElementById('yourname').value;
    if(userName.length === 0) {
        alert("Erm... are you sure that\'s your name?");
        prologueThree();
    } else {
        document.getElementById('content').innerHTML = '<center> \
<img src="http://pokemonroleplay.thedevhome.net/images/Gameboy/characters/red.png"><br> \
Right, so your name is ' + userName + '! \
<br><br> \
<a onclick="prologueFive()"><button>>>Continue>></button></a></center>';
    }
}

这只是脚本的一个片段,但整个事情在 Firefox 中运行良好,对于前三个序言函数,它在 Chrome 中运行良好。只有当它尝试运行 prologueFour 时,它才会惊慌失措并返回。我也尝试过 Chrome 开发者控制台,但它从未注册过错误。

预先感谢您的帮助。

4

2 回答 2

2

我去了你的网站 ,我注意到你正在将一个按钮绑定onclicksubmit表单中的一个按钮,而不会阻止执行默认行为,默认行为是刷新页面的表单提交,从而使你失去位置并回到开头. 使用一个普通的旧按钮或锚标签,就像你之前的序幕一样。如果您出于某种原因坚持使用提交,请阻止默认行为,如下所示:

function prologueFour(e) {
    typeof e.preventDefault === 'function'
        ? e.preventDefault()
        : e.returnValue = false;
    // now rest of code can continue without page refresh
}
于 2012-12-22T03:00:17.730 回答
0

我不知道是否还有其他问题,但>>Continue>>不是完全符合标准的 html,这可能会导致问题。你应该&gt;改用。

于 2012-12-22T02:44:04.157 回答