Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onclick自动为我的所有元素执行,但不在它单击的元素中执行_Javascript - Fatal编程技术网

Javascript onclick自动为我的所有元素执行,但不在它单击的元素中执行

Javascript onclick自动为我的所有元素执行,但不在它单击的元素中执行,javascript,Javascript,HTML: 出示我的桌子 ` JS: 理论上,当我点击“显示我的表格”时,我会看到带有我表格名称的链接列表。当我点击其中一个链接时,我会看到这个表格的名称,但当我点击“显示我的表格”时,我所有的onclick都在执行 <section class="get"> <li><button onclick="ShowMyTables()" id="show_my_tables"> Show my tables</button></li>

HTML:


  • 出示我的桌子
    `
    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>