Javascript 自定义函数错误-“;“未定义”;
我有以下Javascript代码:Javascript 自定义函数错误-“;“未定义”;,javascript,jquery,Javascript,Jquery,我有以下Javascript代码: $('td:eq(2)', nRow).html('<a class="critical" href="#" OnClick="toAjax(\''+aData[1]+'\', \''+aData[2]+'\');">'+aData[3]+'</a>'); $('td:eq(2)”,nRow.html(“”); 我在Firebug中收到以下错误消息 toAjax没有定义 我的职能: $(document).ready(fun
$('td:eq(2)', nRow).html('<a class="critical" href="#" OnClick="toAjax(\''+aData[1]+'\', \''+aData[2]+'\');">'+aData[3]+'</a>');
$('td:eq(2)”,nRow.html(“”);
我在Firebug中收到以下错误消息
toAjax没有定义
我的职能:
$(document).ready(function() {
oTable = $('.statisticsTable').dataTable({
"bJQueryUI" : true,
"iDisplayLength" :50,
"sAjaxSource": 'arrays.txt',
"aoColumns" : [{ "bSearchable": true, "bVisible": false },null, null, null, null, null,null,null,null,null,null],
"fnRowCallback" : function(nRow, aData, iDisplayIndex) {
if (aData[3] == "1") {
$('td:eq(2)', nRow).html('<a class="critical" href="#" OnClick="toAjax(\''+aData[1]+'\', \''+aData[2]+'\');">'+aData[3]+'</a>');
}
else if
(aData[4] == 123) {
$('td:eq(3)', nRow).html( '<a class="critical" href="serverID='+aData[0]+'&db='+aData[1]+'&task=Workload'+'">'+aData[2]+'<span class="highcharts"></span></a>' ).attr("class","kritikal");
}
else if
(aData[3] >1) {
$('td:eq(3)', nRow).html( '<a id="ajax_call" class="critical" href="#">'+aData[3]+'<span class="highcharts"></span></a>' );
}
return nRow;
},
} );
function toAjax( server, db )
{
$.ajax({
type: "POST",
url: "someurl.php",
data: "server=" + server + "&db=" + db,
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
});
$(文档).ready(函数(){
oTable=$('.statisticsTable').dataTable({
“bJQueryUI”:没错,
“iDisplayLength”:50,
“sAjaxSource”:“arrays.txt”,
“aoColumns”:[{“bSearchable”:true,“bVisible”:false},null,null,null,null,null,null,null,null,null,null,null,null],
“fnRowCallback”:函数(nRow、aData、iDisplayIndex){
如果(数据[3]=“1”){
$('td:eq(2)”,nRow.html(“”);
}
否则如果
(数据[4]==123){
$('td:eq(3)”,nRow).html(''.attr(“class”,“kritikal”);
}
否则如果
(aData[3]>1){
$('td:eq(3)”,nRow.html(“”);
}
返回nRow;
},
} );
函数toAjax(服务器,数据库)
{
$.ajax({
类型:“POST”,
url:“someurl.php”,
数据:“server=“+server+”&db=“+db,
成功:功能(msg){
警报(“保存的数据:“+msg”);
}
});
}
});
我可以实现这一点(一个简化的示例):
1.
1.
1.
$(文档).ready(函数(){
变量aData=[1,2,3,4];
$('td:eq(2)')
.html(“”)
.儿童(‘a.critical’)
。单击(函数(){
toAjax(aData[1],aData[2]);
});
});
函数toAjax(服务器,数据库)
{
日志(服务器,数据库);
返回false;
}
注意在添加html之后如何添加单击处理程序。这使得添加处理程序比使用内联文本更简洁
EDIT-看到您的编辑后,下面是您的toAjax()
函数“未定义”的原因
另外,我会检查以确保toAjax()
已声明且不在函数范围内(例如,$(document).ready()
块中没有该函数)。toAjax函数中定义的“id”和“name”变量在哪里?确保函数toAjax(…)
在您的OnClick=”“
属性中使用它之前已声明。您能再显示一些代码吗?您在哪里声明此函数?如果它位于document.ready
处理程序中,则它将仅位于该函数的本地。但是为什么要这样创建HTML呢?如果使用jQuery,请正确使用它并将事件处理程序附加到jQuery中。只需使用jQuery.bind()
或添加处理程序,就可以在语法方面真正帮助自己。添加元素后单击()
处理程序,而不是在添加元素时单击内联处理程序。
<table>
<tbody>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table>
$(document).ready(function(){
var aData = [1,2,3,4];
$('td:eq(2)')
.html('<a class="critical" href="#">'+aData[3]+'</a>')
.children('a.critical')
.click(function(){
toAjax(aData[1],aData[2]);
});
});
function toAjax( server, db )
{
console.log(server, db);
return false;
}