2014-09-30 93 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