js的函数执行问题

问题:当我第一次输入字符串“a”的时候,添加成功了,当我第二次还输入相同的字符串“a”的时候,居然没添加成功,求高手找找那个地方的bug,并给我指点出来错误的原因,多谢~~~
代码如下:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <ul class="ct">
            <li>这里是</li>
            <li>我们</li>
            <li>地方</li>
        </ul>
        <input class="ipt-add-content" placeholder="添加内容" />
        <button id="btn-add-start">开头添加</button>
        <button id="btn-add-end">结尾添加</button>
        <script>
            var oint = document.getElementsByClassName("ipt-add-content")[0];
            var obtnst = document.getElementById("btn-add-start");
            var obtnen = document.getElementById("btn-add-end");
            var oul = document.getElementsByClassName("ct")[0];
            var os = /[^\s]/g;
            obtnst.onclick = function() {
                if(os.test(oint.value)) {
                    var neol=oul.children[0];
                    var oli=document.createElement("li");
                    oli.innerText=oint.value;
                    oul.insertBefore(oli,neol);
                    oint.value="";
                }
            }
            obtnen.onclick = function() {
                if(os.test(oint.value)) {
                    var oli1 = document.createElement("li");
                    oli1.innerText = oint.value;
                    oul.appendChild(oli1);
                    oint.value = "";
                }
            }
        </script>
    </body>

</html>
阅读 1.8k
1 个回答

问题在你的正则表达式上var os = /[^s]/g;,改成var os = /[^s]/;。带g的正则会记忆上次匹配的index,造成下次匹配的时候匹配不上了就。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题