Javascript onclick自动为我的所有元素执行,但不在它单击的元素中执行
HTML:Javascript onclick自动为我的所有元素执行,但不在它单击的元素中执行,javascript,Javascript,HTML: 出示我的桌子 ` JS: 理论上,当我点击“显示我的表格”时,我会看到带有我表格名称的链接列表。当我点击其中一个链接时,我会看到这个表格的名称,但当我点击“显示我的表格”时,我所有的onclick都在执行 <section class="get"> <li><button onclick="ShowMyTables()" id="show_my_tables"> Show my tables</button></li>
出示我的桌子
`
JS:
理论上,当我点击“显示我的表格”时,我会看到带有我表格名称的链接列表。当我点击其中一个链接时,我会看到这个表格的名称,但当我点击“显示我的表格”时,我所有的onclick都在执行
<section class="get">
<li><button onclick="ShowMyTables()" id="show_my_tables"> Show my tables</button></li>
<ul id = orders>
</ul>
</section> `
函数ShowMyTables(){
$(订单).empty();
$.ajax({
键入:“获取”,
url:“/table/show_my_tables”,
成功:函数(数据){
控制台日志(数据);
对于(变量i=0;i表名:“+data.nameArr[i]+””;
}
}
})
您的按钮应该在列表之外,否则在调用empty()
时它会被破坏,因此您的
周围的标签是不需要的
无序列表的Id值应该用引号括起来,如下所示:
。当通过$function访问订单列表时,您的参数也应该用引号括起来,因为它是字符串“orders”
而不是名为orders
的变量
此外,如果要按id选择元素,则应在其id前面加上#,因此要获得id为“orders”的元素,应使用$(“#orders”)
另外,我注意到您希望为动态创建的列表元素分配onclick侦听器,但您的方法是错误的。现在执行函数ShowThisTable
,然后使用HTML将其返回值添加到字符串中
考虑到代码中有很多基本错误,我建议您在转到更高级的主题(如AJAX)之前修改HTML和javascript语法。所有onclick
函数都会启动,因为您在for
循环的每次迭代中都调用ShowThisTable()
“ShowThisTable(“
和”)
需要打印在要连接的字符串文本中:
function ShowMyTables(){
$(orders).empty();
$.ajax({
type:"GET",
url:"/table/show_my_tables",
success:function(data){
console.log(data);
for (var i = 0; i < data.nameArr.length; i++) {
$(orders).append("<li>Table name:<a onclick = '"+ShowThisTable(data.nameArr[i])+"'> " + data.nameArr[i] + "</a></li>");
}
}
})
Thanx代表u答案。如何动态分配onclick?而不是在表名等字符串中写入HTML。
您可以使用创建DOM对象。这样使用$function将返回一个带有
元素的变量。以后可以使用jQuery.on(“click”,function(){})在该元素上分配onclick
。稍后,使用itAlso上的.appendTo(“body”)
将其附加到body中,并查看chester的答案,以获得一种html字符串形式的附加方法
function ShowMyTables(){
$('#orders').empty();
$.ajax({
type:"GET",
url:"/table/show_my_tables",
success:function(data){
console.log(data);
for (var i = 0; i < data.nameArr.length; i++) {
$(orders)
.append("<li>Table name:<a onclick = 'ShowThisTable(" + data.nameArr[i] + ")'> " + data.nameArr[i] + "</a></li>");
}
}
})
<section class="get">
<li><button onclick="ShowMyTables()" id="show_my_tables"> Show my tables</button></li>
<ul id ="orders">
</ul>
</section>