2014-09-30 17 views
0

下面的代碼使用saveFieldData()保存在textarea中輸入的數據。我想使用刪除按鈕作爲書籤,它將使此字段爲空,並將其保存在服務器中。如何使用書籤從HTML頁面獲取函數參數值?

<textarea rows="4" cols="49" name="Synonym" id="Synonym" onchange="saveFieldData(85261, this, 'docProductInfo', 'Synonym', 84796);"></textarea> 

因此,這裏是我的書籤

javascript:(function(){var sy=document.getElementById("Synonym");sy.value="";saveFieldData(85261,sy, 'docProductInfo', 'Synonym', 84796);})(); 

它完美地刪除數據,但問題是每當頁面重新加載它分配了一些新的值作爲函數的參數,結果我的代碼不能工作。對於例如頁面重新加載後,像這樣的

saveFieldData(85261, this, 'docProductInfo', 'Synonym', 84789); 

功能參數的變化基本上是最後一個參數changes.So,有沒有什麼辦法讓我的書籤將檢測到的對自動計量併成功刪除該字段?

+0

你需要一個函數計算ulate一個url參數的值? – 2014-09-30 15:03:37

+0

不,我只需要自動獲取該參數值,以便即使頁面重新加載更改值我的小書籤將自動從該HTML頁面獲取它。 – Satya 2014-09-30 15:06:06

回答

0

如果你只需要調用onchange處理你不「T需要知道它的參數:

var sy=document.getElementById("Synonym"); 
var fn=sy.onchange; 
sy.value=""; 
fn.call(sy); 

或者更簡單地說,因爲onChange處理並不在其內使用任何this

fn(); 
+0

非常感謝slebetman。它的工作就像一個魅力。請你給我建議一些可以參考的東西,以獲得有關javascripts的良好知識嗎?但是,最後,我會說StackOverflow是一個非常棒的論壇。真的很感謝。 – Satya 2014-10-01 15:48:31

+0

不幸的是,沒有單一的資源來獲得現代javascript編程的豐富知識。經典的參考文獻是Rhino的書(Javascript:The Definitive Guide),但我從未閱讀過封面。還有一些代碼示例現在被認爲不是很好的做法。我第一次介紹如何幹淨的JavaScript代碼可以是Douglas Crockford在YouTube上的談話。我還強烈建議Crockford的書:Javascript:The Good Parts – slebetman 2014-10-02 03:11:08

+0

另外,請確保您熟悉所有參考站點:MDN - https://developer.mozilla.org/en-US/,MSDN IE參考 - http: //msdn.microsoft.com/en-us/library/ie/hh828809,用於檢查瀏覽器兼容性的quirksmode - http://www.quirksmode.org/,以及用於檢查html5技術狀態的caniuse - http:// caniuse .com/ – slebetman 2014-10-02 03:19:04

0

不知道更多關於你的網頁,我不能給你一個理想的答案。 ,還可以有一個更好的辦法,但僅基於你已經證明什麼,我看到的唯一的答案是使用正則表達式是這樣的:

sy = document.getElementById("Synonym"); 
id = sy.onchange.toString().match(/saveFieldData\(.+?,.+?,.+?,.+?,\s*(\d+)\)/)[1]; 
+0

@DG爲代碼感謝了很多。我試過這段代碼,但它對我沒有用。然後我發現'sy.onchange'實際上是一個函數,而不是一個字符串。所以我用'String(sy.onchange)令人驚訝的是它的工作再次感謝您的建議。所以修改後的代碼是 'sy = document.getElementById(「Synonym」); id = String(sy.onchange).match(/ saveFieldData \(。+?,。+?,。+?,。+?,\ s *(\ d +)\)/)[1];' – Satya 2014-10-26 10:33:59

+0

好抓住。更標準的方法是'sy.onchange.toString()。match(...)'。我已經更新了我的答案以反映這一點。但我發現slebetman給了你一個更好的答案。我太在意你的「問題」,並忽視了你的實際目標。 – 2014-11-04 06:42:38

相關問題