Javascript HREF 更新

发布于 2024-11-04 14:51:16 字数 1100 浏览 3 评论 0原文

我偶尔访问的一些 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 跟踪它时,它似乎工作正常,即链接 href 值和文本字段值在 DOM 中发生更改,但是当函数退出时它们返回到页面中的原始值。我做错了什么?

I have some URLs I visit occasionally that have page numbers indicated in the HREF. These change and I need to keep track of the last one visited. I have been doing this by cutting-pasting into a text file, but want to replace this with a local HTML page that I can update with javascript. Here is an example I created:

<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>

When I enter a new value in the text field and trace through this with Firebug it seems to work fine, i.e. the link href value and the textfield value get changed in the DOM, but when the function exits they are back to the original values in the page. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪荡不羁 2024-11-11 14:51:16

主要编辑:

问题是,在表单标记内的单个 中按 Enter 键将提交表单,所以发生的情况是,您输入输入,按 Enter 键,这会导致blor,因此 onchange 事件被触发,调试器中的一切都显示良好。完成后,页面将重新加载(因为默认表单 action 是获取当前页面),不会闪烁,并重置输入值。

解决方案 1:删除

标记。在此代码片段中,表单元素没有做任何有用的事情。

解决方案 2:向

添加 onsubmit=return(false) 属性。

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

MAJOR EDIT:

The problem is that a hitting enter in a single <input> inside a form tag will submit the form, so what happens is, you type in the input, hit enter, which causes a blor, so the onchange event fires and everything shows up fine in the debugger. When that finishes, the page reloads (since the default form action is to GET the current page) without flicker, resetting the input value.

Solution 1: Remove the <form> tags. The form element isn't doing anything useful in this snippet.

Solution 2: Add an onsubmit=return(false) attribute to the <form>.

Solution 3: Add another non-hidden input to the form.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文