无法从事件上的jquery调用函数

时间:2014-08-09 15:35:48

标签: javascript jquery html javascript-events

这是HTML

<div id="partialViewContainer">

<table id="assetTable" class="table-hover table-bordered table-striped">
    <thead>
        <tr>
            <th class="col-md-2">
                colulmn1
            </th>
            <th class="col-md-4">
                column2
            </th>
            <th class="col-md-4">
                column3
            </th>
            <th class="col-md-3">
                column4
            </th>
        </tr>
    </thead>
    <tbody>
            <tr>
                <td>
                   1
                </td>
                <td>
                  2
                </td>
                <td>
                  3
                </td>
                <td>
                   4
                </td>
            </tr>
        }
    </tbody>
</div>

<script type="text/javascript">

         $(document).ready(function () {

                  //Get tAble contents
        var getTableContents = function () {
            //Get the reference to the table
            var table = document.getElementById('assetTable');

            //Get the number of rows in the table
            var noOfRows = table.rows.length;

            //Loop through each row of the table
            for (var i = 0; i < noOfRows; i++) {
            //Get the cells of the table
            var cells = table.rows[i].cells;

            //Get the number of cells in each row
            var noOfCells = cells.length;

            for (var j = 0; j < noOfCells; j++) {
                var cellVal = cells.item(j).innerHtml;
                alert(cellVal);
            }
         }
       };

       $('#partialViewContainer').on('click', 'table tr', getTableContents);



    });
</script>

您好 每次在表中单击一行时,我都试图调用函数getTableContents。但是,上面粘贴的代码我得到一个错误:“未捕获的错误:userdefined不是函数。”

任何人都知道为什么会这样?

5 个答案:

答案 0 :(得分:3)

错误是因为你没有定义变量&#34; getTableContents&#34;在传递给&#34; on&#34;方法。将getTableContents变量声明移到调用&#34; on&#34;上方。方法你应该好好去。

答案 1 :(得分:2)

尝试使用&#34;函数getTableContents(){}&#34;代替。

答案 2 :(得分:1)

更换  $(&#39; #partViewViewContainer table tr&#39;)。on ... 到

$('#partialViewContainer table tr').click(function(){
      getTableContents();
});
js函数中的

参数是可选的。

答案 3 :(得分:1)

我在这两个变化之后才开始工作:

function getTableContents() { ... }

var cells = table.rows[i].cells;

如果在绑定后声明函数,则需要以这种方式定义它。 在它之后,它抱怨table.rows.items不是一个功能。我将其更改为table.rows[i]并且确实有效。

答案 4 :(得分:1)

在这里,您尝试将函数作为变量名称传递给click事件上的回调函数。但在使用变量之前,您必须声明它。在使用之前,您没有定义变量。