我偶尔访问一些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:向表单添加另一个非隐藏的输入。