繁体   English   中英

在onClick中调用javascript函数

[英]calling a javascript function in onClick

当我部署代码时,它给了我一个错误:saveRows不是一个函数那么怎么了?

 dataGrid.prototype = { display: function() { var self = this; var html = []; var check = 0; var lastSelection; html.push("<div style='margin-left:20px'>"); html.push("<input class='btn btn-default' type='button' value='Save All Rows' onclick='saveRows()'' />"); html.push("<table id='" + this.id + "" + "'class='table'>\\n</table>"); html.push("<div id='pagger_" + this.id + "'></div>"); html.push("</div>"); $('body').append(html.join("")); $("#" + this.id).jqGrid({ // ... }); }, // ... saveRows: function() { var ids = $("#" + this.id).jqGrid('getDataIDs'); for (var i = 0; i < ids.length; i++) { $("#" + this.id).jqGrid('saveRow', ids[i]); } } }; 

还有其他建议吗?

你可以改变

<input class='btn btn-default' type='button' value='Save All Rows'
       onclick='saveRows()'' />

<input id='mysave' class='btn btn-default' type='button' value='Save All Rows'/>

并使用

$("#mysave").click(function () {
    // any code executed on click on the button
});

saveRows函数是dataGrid原型的一部分。 因此,它没有被定义为全局函数-并且不能被定义为纯HTML中的onclick处理程序。

您可以通过使用jQuery(而不是HTML字符串)创建DOM元素来解决问题,并直接绑定onclick回调。 例如(未测试):

$(body).append(
    $('<div/>').style('margin-left', '20px').append(
        $('<button/>', {
            'class': 'btn btn-default',
            'text': 'Save All Rows'
        }).on('click', function () {
            self.saveRows();
        }),
        $('<table/>', {
            'id': self.id,
            'class': 'table'
        }),
        $('<div/>', {
            'id': 'pager_' + self.id
        })
    )
);

改变这个:

html.push("<input class='btn btn-default' type='button' value='Save All Rows' onclick='saveRows()'' />");

实际上是一个对象:

var theInput = $("<input class='btn btn-default' type='button' value='Save All Rows'>");
    $(document).on("click", theInput, function(){self.saveRows()});

然后,将其添加到html数组中。

html.push($(theInput)[0].outerHTML);

https://jsfiddle.net/atg5m6ym/3524/

你可以试试这个

$('body').on('click','#yourButtonId',function(){  
    saveRows(); 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM