Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HREF更新_Javascript_Href - Fatal编程技术网

Javascript HREF更新

Javascript HREF更新,javascript,href,Javascript,Href,我偶尔会访问一些URL,它们在HREF中显示了页码。这些变化和我需要保持跟踪的最后一个访问。我一直在通过将粘贴剪切成文本文件来实现这一点,但我想用一个本地HTML页面来替换它,我可以用javascript更新该页面。以下是我创建的一个示例: <script type="application/javascript"> function update(n,newvalue) { var link = document.getElementById('l

我偶尔会访问一些URL,它们在HREF中显示了页码。这些变化和我需要保持跟踪的最后一个访问。我一直在通过将粘贴剪切成文本文件来实现这一点,但我想用一个本地HTML页面来替换它,我可以用javascript更新该页面。以下是我创建的一个示例:

<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,
有一个
类型
属性,默认情况下是
提交
。尝试
以避免任何表单提交。