编辑:这是一个奇怪的问题,我不知道发生了什么。这个HTML怎么样
<div class="col-lg-6">
Find:
<textarea id="replace" rows="5" cols="1">to replace</textarea>
</div>
让这段代码失败?
<script type="text/javascript">
function go(transform_function) {
alert('go');
transform_function('test');
}
function replace(output) {
alert('rep');
}
</script>
替换
奇怪的小提琴
答案 0 :(得分:2)
是Javascript函数只是对象,就像任何其他对象一样,您可以将函数作为参数传递给函数。这是一种非常正常且经常使用的做法。
<button onclick="addContact('1', refreshContactList);">Go</button>
<script type="text/javascript">
function addContact(id, callback) {
console.log(id);
callback();
// You can also pass arguments if you need to
// refreshCallback(id);
};
function refreshContactList() {
console.log('Callback Achieved');
};
</script>
更新了答案
问题是你有一个表单元素id使用与你想要调用的函数相同的名称,它会在页面上引起引用冲突。在表单元素ID的末尾添加类似ID的内容,以消除冲突或将函数名称更改为更具描述性的内容,如替换器。
可以在this其他堆栈溢出问题中找到更详细的答案。
答案 1 :(得分:0)
这是有效的,因为您将refreshContactList
按钮中的字符串存储到名为refreshCallback
的变量中。正在调用的refreshCallback()
函数在幕后进行到refreshContactList()
。那就是说,这太复杂了!
请参阅this fiddle。调用addContact()
函数,从该函数传递id
。然后调用refreshContactList()
函数,传递id
。 1}}功能不需要。