我偶尔会访问一些在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跟踪它时,它似乎工作正常,即链接href值和文本字段值在DOM中更改,但当函数退出时它们返回到页面中的原始值。我做错了什么?
答案 0 :(得分:0)
主要编辑:
问题是在表单标签内点击输入单<input>
会提交表单,所以会发生什么,输入输入,点击回车,这会导致blor,所以{{ 1}}事件触发,调试器中显示的一切都很好。完成后,页面重新加载(因为默认格式onchange
是GET当前页面)没有闪烁,重置输入值。
解决方案1:删除action
标记。表单元素在此代码段中没有做任何有用的事情。
解决方案2:向<form>
添加onsubmit=return(false)
属性。
解决方案3:向表单添加另一个非隐藏输入。