【问题标题】:Javascript HREF updatingJavascript HREF 更新
【发布时间】:2012-01-29 10:50:36
【问题描述】:

我偶尔会访问一些在 HREF 中标明页码的 URL。这些变化,我需要跟踪最后一次访问。我一直在通过剪切粘贴到一个文本文件中来做到这一点,但想用我可以用 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 中发生了变化,但是当函数退出时,它们又回到了页面中的原始值。我做错了什么?

【问题讨论】:

  • 在 Fx4 中为我工作 - 我个人会使用 onKeyUp 而不是 onchange
  • 我认为正确的类型是text/javascript - 至少基本上到处都是这样。
  • 奇怪。我在 Fx 3.6.17 和 IE 8 中尝试了它,它的行为如前所述。这能解释什么?
  • (无关:你没有关闭&lt;DT&gt;中的&lt;A&gt;
  • @steve 我对您如何更改 href 值非常感兴趣。就像一个魅力,tks!

标签: javascript href


【解决方案1】:

主要编辑:

问题是在表单标签内的单个&lt;input&gt; 中按回车键会提交表单,所以发生的情况是,您输入输入,按回车键,这会导致模糊,所以onchange 事件火灾和调试器中的一切都显示正常。完成后,页面重新加载(因为action 的默认形式是获取当前页面)没有闪烁,重置输入值。

解决方案 1:删除 &lt;form&gt; 标记。表单元素在这个 sn-p 中没有做任何有用的事情。

解决方案 2:将 onsubmit=return(false) 属性添加到 &lt;form&gt;

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

【讨论】:

  • 谢谢,但结果相同。还将脚本类型更改为文本/javascript。我不明白为什么在脚本执行期间它会在 DOM 中发生变化,但这些变化在它退出时并没有保留。
  • 您确定页面没有重新加载吗?是什么触发了更改,您是否通过按 Enter 来模糊该字段,如果是这样,则 javascript 正在更改它,然后在 &lt;form&gt; 中使用单个输入的 enter 按键导致表单提交重新加载页面,因为默认 @ 987654329@的表单是同一页。
  • 是的,它似乎正在重新加载页面。因此,我更改了脚本以在输入字段中包含一个带有 onClick 触发功能的按钮,而不是 onChange。同样的事情也会发生,但也许按钮点击也会触发重新加载。如果是这样,问题是我可以使用什么事件来触发脚本。不能像@mplungjan 建议的那样使用 onKeyUp,因为我可能必须输入两个数字才能更新页码。
  • 啊哈...key好像是去掉form标签,然后就不用reload了。
  • @Steve, &lt;button&gt; 有一个type 属性,默认为submit。尝试&lt;button type=button&gt; 以避免提交任何表单。 w3schools.com/tags/att_button_type.asp
猜你喜欢
  • 2011-06-30
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 2015-03-25
相关资源
最近更新 更多