使用append在javascript函数中发送数组

使用append在javascript函数中发送数组,javascript,jquery,html,Javascript,Jquery,Html,现在的情况是,我用一个按钮添加行来创建一个可点击的动态表。每行都有信息,可以单击(整行)。我在寻找一种方法,将我单击的行的信息发送给另一个js函数,该函数将在另一个动态表中复制该行。但这里有一个技巧:要创建一个可单击的行,我使用函数.append,然后在标记中创建该行,该标记将使用href=“function\u to\u add\u复制的行”调用另一个函数 问题是我找不到好的语法。任何关于语法或其他方法的建议都将不胜感激。这是我的密码: //javascript function to mak

现在的情况是,我用一个按钮添加行来创建一个可点击的动态表。每行都有信息,可以单击(整行)。我在寻找一种方法,将我单击的行的信息发送给另一个js函数,该函数将在另一个动态表中复制该行。但这里有一个技巧:要创建一个可单击的行,我使用函数
.append
,然后在标记中创建该行,该标记将使用
href=“function\u to\u add\u复制的行
”调用另一个函数

问题是我找不到好的语法。任何关于语法或其他方法的建议都将不胜感激。这是我的密码:

//javascript function to make clickable rows
{
    var infos = modules_found[i].split("\\t");
            rowNum++;
            //word ="'Row number : "+infos[0]+"'";
            $(".targets").append('<li> <a href="javascript:transferArray(\"'+String(infos[0])+'\")"><div class="ui-grid-a"><div class="ui-block-a ui-grid-b"><div class="ui-block-a">'+infos[0]+'</div><div class="ui-block-b">'+infos[1]+'</div><div class="ui-block-c">'+infos[2]+'</div></div><div class="ui-block-b ui-grid-b"><div class="ui-block-a">'+infos[3]+'</div><div class="ui-block-b">'+infos[4]+'</div><div class="ui-block-c">'+infos[5]+'</div></div></div></a></li>');
}

//javascript function who receive the array and add the copied row
function transferArray(infos)
{
    alert("in transferArray function");
    $(".copied").append('<li> <a href="javascript:alert(\"'+row+'\")"><div class="ui-grid-a"><div class="ui-block-a ui-grid-b"><div class="ui-block-a">'+infos[0]+'</div><div class="ui-block-b">'+infos[1]+'</div><div class="ui-block-c">'+infos[2]+'</div></div><div class="ui-block-b ui-grid-b"><div class="ui-block-a">'+infos[3]+'</div><div class="ui-block-b">'+infos[4]+'</div><div class="ui-block-c">'+infos[5]+'</div></div></div></a></li>');
}
//生成可单击行的javascript函数
{
var infos=modules_found[i]。拆分(\\t”);
rowNum++;
//word=“”行编号:“+infos[0]+”;
$(“.targets”).append(“
  • ”); } //接收数组并添加复制行的javascript函数 函数传递数组(infos) { 警报(“在transferArray函数中”); $(“.copied”).append(“
  • ”); }
    这通常是如何处理的-如果您没有使用Angular或Knockout之类的javascript库,则只需使用数据属性将数据存储在实际的HTML中。只要以
    data-


    您已经在使用jQuery,所以使用它来处理单击,然后您就可以将元素作为jQuery对象单击在那里。您可以像以前一样使用本机javascript函数来处理点击和传递数据,但您已经在使用jQuery,这将自动为您带来更多数据。

    这里是一种高级方法(假设您知道jQuery):而不是将行包装在标记中,更好的方法是在表上注册一个点击事件监听器(通过jQueryAPI,而不是HTML)。在该单击处理程序中,您可以轻松地获得单击的行的索引(使用jQuery API),并且一旦获得了行索引,您就可以轻松地克隆该行并将其移动到其他地方。

    最后,我使用了本机javascript函数,因为建议的解决方案不起作用,即使它看起来完全合法。以下是我所做的:

       (...)
    //append the js function
    $(".FindTable").append('<li id="addedFindRow"><a href="javascript:copyrow(\''+infos[0]+'\',\''+infos[1]+'\',\''+infos[2]+'\',\''+infos[3]+'\',\''+infos[4]+'\',\''+infos[5]+'\');"><div class="ui-grid-a"><div class="ui-block-a ui-grid-b"><div class="ui-block-a">'+infos[0]+'</div><div class="ui-block-b">'+infos[1]+'</div><div class="ui-block-c">'+infos[2]+'</div></div><div class="ui-block-b ui-grid-b"><div class="ui-block-a">'+infos[3]+'</div><div class="ui-block-b">'+infos[4]+'</div><div class="ui-block-c">'+infos[5]+'</div></div></div></a></li>');
    }
    
    function copyrow(info0,info1,info2,info3,info4,info5)
    {
        //use data
    }
    
    (…)
    //附加js函数
    $(“.FindTable”).append(“
  • ”); } 函数copyrow(info0、info1、info2、info3、info4、info5) { //使用数据 }

    这相当重,但那就行了。如果考虑更多的参数,会更加混乱。

    你能在这里创建一个工作示例吗?谢谢你的回答!只是有点精确。。。$(document)代码需要在js函数中,在js文件或html文件中?只要js文件在HTMLI中被正确引用,您可以将javascript放在任何地方。我试图简单地在click事件中放置一个警报,看看它是否有效,并且似乎没有调用该事件。您认为将
    标记保留为空会阻止事件发生吗?我在没有标记的情况下进行了测试,该行不再显示为可单击,并且也不会调用单击事件。不。。。。。。不要让它空着,我只是告诉你如何启动HTML,用你的旧代码完成它我添加。。。所以你可以看到不幸的是,我在两周前开始使用html/css/js/php。。。(c++/c#guy抛出了web编程=S)但是谢谢你的回答!欢迎来到JS世界!我向JS推荐这些书(通常是关于核心JS概念的)-
     $(".targets").append('<li class="rowClick" data-id="xx" data-name="xx" data-custom=""> <a href="...
    
    $(document).on('click' , 'rowClick' , function(e){
         var $this = $(this);
         //get data of row clicked
         var idClicked = $this.attr('data-id');
         var nameClicked = $this.attr('data-name');
    
         // you also have the full HTML of the clicked row if you need to copy somewhere
         var rowHtml =  $(".copied").append($this);
    });
    
       (...)
    //append the js function
    $(".FindTable").append('<li id="addedFindRow"><a href="javascript:copyrow(\''+infos[0]+'\',\''+infos[1]+'\',\''+infos[2]+'\',\''+infos[3]+'\',\''+infos[4]+'\',\''+infos[5]+'\');"><div class="ui-grid-a"><div class="ui-block-a ui-grid-b"><div class="ui-block-a">'+infos[0]+'</div><div class="ui-block-b">'+infos[1]+'</div><div class="ui-block-c">'+infos[2]+'</div></div><div class="ui-block-b ui-grid-b"><div class="ui-block-a">'+infos[3]+'</div><div class="ui-block-b">'+infos[4]+'</div><div class="ui-block-c">'+infos[5]+'</div></div></div></a></li>');
    }
    
    function copyrow(info0,info1,info2,info3,info4,info5)
    {
        //use data
    }