让我说我有这个部分。
<input id="text1" type="text" name="text1" onchange="alert('valueA');" /><br />
<input id="text2" type="text" name="text2" /><br />
我想要做的是获取input =“text1”的onchange事件处理程序并附加到另一个元素的事件“text2”。 到目前为止,没关系。我可以获得输入“text1”的DOM0 hanlder并将其作为DOM2附加到文本2。
_handler= $('#text1')[0].onchange;
$('#text2').change(function (event) {
if (typeof _handler=== "function") {
_handler.call(this, event);
}
但是,问题是,我想在附加到“text2”之前更改/添加一些js代码。
例如,在附加到“text2”之前,我想要更改“alert('valueA');”进入“警报('valueA.This is text2')”;
我怎样才能做到这一点?
警告声明只是示例,请不要给出解决方案,例如将警报消息存储到全局变量中,显示变量的值......等等。
感谢。
答案 0 :(得分:1)
这不可能。您无法更改函数内的代码。
虽然Javascript函数是可变对象,但您只能向它们添加属性和方法,但是您无法更改其中的代码。
如果你想使用邪恶的eval
(正如你在评论中指定的那样),你可以将函数转换为字符串,替换函数中你想要的任何文本,然后评估它: / p>
$('#text2').change(function (event) {
eval(
'(' + $('#text1')[0].onchange.toString().replace('valueA', 'valueB') + ')()'
);
});
这是小提琴:http://jsfiddle.net/A4w2W/
但是,请请不要这样做。这是编写代码的最糟糕方式,永远 !!
你应该认真重新考虑你对这件事的处理方法。
答案 1 :(得分:-1)
从技术上讲,没有。但还有其他解决方案。
<script type="text/javascript">
<!--
alertvalue = "valueA";
//-->
</script>
<input id="text1" type="text" name="text1" onchange="alert(alertvalue);" /><br />
<input id="text2" type="text" name="text2" /><br />
<script type="text/javascript">
$('#text2').change(function(event) {
alert(alertvalue + '. This is text2');
});
</script>