我偶尔访问一些URL,这些URL的页码在HREF中指示。这些变化,我需要跟踪最后一次访问。我一直通过剪切粘贴到文本文件中来执行此操作,但是希望将其替换为可以使用javascript更新的本地HTML页面。这是我创建的示例:

<script type="application/javascript">
      function update(n,newvalue) {
           var link = document.getElementById('l' + n);
           var href = link.getAttribute('href', 2);
           var textfield = document.getElementById('p' + n);
           var parts = new Array();
           parts = href.split('-');
           parts[1] = 'p' + newvalue;
           textfield.setAttribute('value', newvalue);
           var newhref = parts.join('-');
           link.setAttribute('href',newhref);
       }
</script>
<form>
     <dl>
         <dt><a target="_blank" id="l1" href="http://foobar.org/t5-p8-data.html">Task 5 Data<a></dt>
         <dd>Page: <input type="text" id="p1" value="8" onChange="update(1,this.value)" /> </dd>
     </dl>
</form>
    </html>


当我在文本字段中输入新值并使用Firebug进行跟踪时,它似乎可以正常工作,即DOM中的link href值和textfield值已更改,但是当函数退出时,它们又恢复为原始值。这一页。我究竟做错了什么?

最佳答案

主要编辑:

问题是,在form标记内的单个<input>中按回车会提交表单,所以发生的情况是,您在输入中键入内容,然后按回车会导致blor,因此onchange事件将触发所有事件在调试器中显示正常。完成此操作后,页面将重新加载(因为默认形式action是获取当前页面),而不会闪烁,从而重置输入值。

解决方案1:删除<form>标记。在此代码段中,表单元素没有做任何有用的事情。

解决方案2:将onsubmit=return(false)属性添加到<form>

解决方案3:向表单添加另一个非隐藏的输入。

10-04 22:42
查看更多