Javascript HREF更新
我偶尔会访问一些URL,它们在HREF中显示了页码。这些变化和我需要保持跟踪的最后一个访问。我一直在通过将粘贴剪切成文本文件来实现这一点,但我想用一个本地HTML页面来替换它,我可以用javascript更新该页面。以下是我创建的一个示例:Javascript HREF更新,javascript,href,Javascript,Href,我偶尔会访问一些URL,它们在HREF中显示了页码。这些变化和我需要保持跟踪的最后一个访问。我一直在通过将粘贴剪切成文本文件来实现这一点,但我想用一个本地HTML页面来替换它,我可以用javascript更新该页面。以下是我创建的一个示例: <script type="application/javascript"> function update(n,newvalue) { var link = document.getElementById('l
<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>
函数更新(n,newvalue){
var link=document.getElementById('l'+n);
var href=link.getAttribute('href',2);
var textfield=document.getElementById('p'+n);
var parts=新数组();
parts=href.split('-');
零件[1]=“p”+新值;
setAttribute('value',newvalue);
var newhref=parts.join('-');
link.setAttribute('href',newhref);
}
任务5数据
第页:
当我在文本字段中输入一个新值并使用Firebug对此进行跟踪时,它似乎工作正常,即在DOM中更改link href值和textfield值,但当函数退出时,它们会恢复到页面中的原始值。我做错了什么?主要编辑:
问题是,在表单标记内的单个
中单击enter键将提交表单,因此发生的情况是,您键入输入,单击enter键,这将导致blor,因此触发onchange
事件,并且调试器中的所有内容都显示良好。完成后,页面将重新加载(因为默认形式操作
是获取当前页面),而不会闪烁,从而重置输入值
解决方案1:删除
标记。表单元素在此代码段中没有做任何有用的事情
解决方案2:向
添加onsubmit=return(false)
属性
解决方案3:在表单中添加另一个非隐藏输入。在Fx4中对我有效-我个人会使用onKeyUp而不是onchange。我认为正确的类型是
text/javascript
-至少基本上到处都是这样。奇怪。我在FX3.6.17和IE8中尝试了它,它的行为与前面提到的一样。什么可以解释这一点?(无关:您没有关闭
中的
)@steve我对如何更改href值非常感兴趣。很有魅力,tks!谢谢,但结果是一样的。还将脚本类型更改为text/javascript。我不明白为什么它在脚本执行期间会在DOM中更改,但这些更改在退出时不会生效。你确定页面没有重新加载吗?触发更改的是什么?您是否通过按enter键模糊了字段?如果是,javascript正在更改它,则使用单个输入在
中按enter键会导致表单提交并重新加载页面,因为表单的默认操作是同一页面。是的,它似乎正在重新加载页面。因此,我修改了脚本,在输入字段中包含一个按钮,该按钮使用onClick触发函数,而不是onChange。同样的事情也会发生,但可能按钮点击也会触发重新加载。如果是这样,问题是我可以使用什么事件来触发脚本。它不能像@mplungjan建议的那样打开键盘,因为我可能需要输入两个数字来更新页码。啊哈…键似乎是删除表单标记,然后不重新加载。@Steve,
有一个类型
属性,默认情况下是提交
。尝试
以避免任何表单提交。