将JavaScript函数作为参数传递给onclick属性

时间:2015-08-26 16:52:07

标签: javascript

编辑:这是一个奇怪的问题,我不知道发生了什么。这个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>

替换

奇怪的小提琴

失败 http://jsfiddle.net/0zhwxcsL/

作品 http://jsfiddle.net/0zhwxcsL/1/

2 个答案:

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

JSFiddle Example

更新了答案

问题是你有一个表单元素id使用与你想要调用的函数相同的名称,它会在页面上引起引用冲突。在表单元素ID的末尾添加类似ID的内容,以消除冲突或将函数名称更改为更具描述性的内容,如替换器。

Reference JS Fiddle

可以在this其他堆栈溢出问题中找到更详细的答案。

答案 1 :(得分:0)

这是有效的,因为您将refreshContactList按钮中的字符串存储到名为refreshCallback的变量中。正在调用的refreshCallback()函数在幕后进行到refreshContactList()。那就是说,这太复杂了!

请参阅this fiddle。调用addContact()函数,从该函数传递id。然后调用refreshContactList()函数,传递id