2011-04-30 40 views
1

我有一些我偶爾訪問的網址,其中包含HREF中指定的頁碼。這些變化,我需要跟蹤訪問的最後一個。我一直在通過剪切粘貼到一個文本文件中,但想用本地HTML頁面替換它,我可以使用javascript進行更新。下面是我創建了一個例子:Javascript HREF更新

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

當我在文本字段中輸入一個新值和跟蹤通過這個與螢火蟲它似乎做工精細,即連結href中值和文本字段值在DOM得到改變,但是當函數退出時,它們會回到頁面中的原始值。我究竟做錯了什麼?

+0

對於我在Fx4中工作 - 我會親自使用onKeyUp而不是onchange – mplungjan 2011-04-30 16:35:29

+0

我認爲正確的類型是'text/javascript' - 至少這就是基本上到處都是的。 – ThiefMaster 2011-04-30 16:39:29

+0

奇怪。我在Fx 3.6.17和IE 8中試用它,它的行爲如前所述。什麼可以解釋這一點? – Steve 2011-04-30 16:41:22

回答

0

主要編輯:

的問題是創下單<input>輸入表單標籤內將提交表單,因此發生的事情是,你在輸入類型,按回車鍵,這會導致blor,所以onchange事件觸發,並在調試器中顯示一切正常。完成後,頁面將重新加載(因爲默認表格action將GET當前頁面)而不閃爍,重置輸入值。

解決方案1:刪除<form>標記。表單元素在這段代碼中沒有做任何有用的事情。

解決方案2:將onsubmit=return(false)屬性添加到<form>

解決方案3:向表單添加另一個非隱藏輸入。

+0

謝謝,但結果相同。還將腳本類型更改爲text/javascript。我不明白爲什麼在腳本執行過程中它會在DOM中發生變化,但是這些變化在退出時不會保持不變。 – Steve 2011-04-30 18:34:02

+0

你確定該頁面沒有重新加載嗎?是什麼觸發了變化,你是否通過按回車模糊了字段,如果是,JavaScript正在改變它,然後在'

'中的輸入鍵按鈕導致表單提交重新加載頁面,因爲默認'該表單的「action」是相同的頁面。 – 2011-04-30 19:09:30

+0

是的,它似乎是重新加載頁面。所以我改變了腳本,使其包含一個帶有onClick的按鈕,而不是在輸入字段中觸發onChange函數。同樣的事情發生,但也許按鈕點擊觸發重新加載。如果是這樣,問題是我可以使用什麼事件來觸發腳本。它不能像@mplungjan建議的那樣是onKeyUp,因爲我可能需要輸入兩個數字來更新頁碼。 – Steve 2011-04-30 19:16:37