无法传递数组参数(使用字符串构建html) - 意外的标识符

时间:2017-08-15 22:17:21

标签: javascript jquery html

我修改了以前的代码,允许将数据数组传递给不同的函数。一切正常,直到我添加这个数据数组。

目前有效(旧版本)仅传递此运算符和ID。

下面在我的代码中,您将看到我将HTML与表格一起构建并传递html以便稍后添加。

您可以看到我正在构建一个带有删除按钮的表。这一切都运行良好,除了我传递数据数组,它告诉我“意外的标识符”

我已经通过传递getDeleteItems(this,ID,ID)对它进行了测试,它运行正常 但是getDeleteItems(this,ID,data)没有。

下面是我的代码,你可以看到我正在传递一个数组(在我的代码和其他函数中都有效(包括这个函数)!)

我现在只是被困住了,似乎无法看到过去,也许一些新鲜的眼睛可以帮助! 谢谢!

<select id="list"> 
<option>op1</option>
<option>op2</option>
<option>op3</option>
</select>

我只是看了一下chrome中的控制台和元素标签:看起来因为某种原因它正在解析对象

onclick =“javascript:getDeleteItems(this,791,[object Object],[object Object],[object Object],....这继续......

3 个答案:

答案 0 :(得分:0)

onclick =“javascript:getDeleteItems”中的错误 第三个参数是数组对象错过{}的数组。 所以你必须像这样调用getDeleteItems函数 onclick =“javascript:getDeleteItems(this,791, { [object Object],[object Object],[object Object] } )”

答案 1 :(得分:0)

正如@Fatehi所提到的,以下几行给出了错误

    sHTML += "<input type = 'Button' id ='DeleteItems' value = 'Delete Selected' onclick='javascript: getDeleteItems(this,";
sHTML += ID;
sHTML += ",";
sHTML += data;
sHTML += ");'></input>";

我认为添加花括号不会解决您的问题,因为data变量是函数的参数,而且它的值不是全局的,当您将它发送到DOM时,范围是全局变量。您最好为每个值使用data attributes,然后您可以像这样访问它们:

<input data-test="test" onclick="console.log(this.attributes['data-test'].value)">

答案 2 :(得分:0)

所以我想出了这个谜题。我有以下功能1)称为鼠标悬停,鼠标悬停功能,然后是删除功能。在我在mouseover中创建删除按钮之前(我还是)。但是我现在让mouseover返回2个项目,一个返回表格的html,另一个返回tableid。我还在mouseover中删除了findfamily函数并将其移动到调用它的位置,然后将其作为数据传递。

functionThatCalledMouseOver(ID,parent,data){
    // below have variables defining row family =findparent etc...
    row.child(mouseOverTable(ID,parent,findParent)[0]).show();
    //now create onclick even passing fullData
    $('#'+DeleteItems).on('click',function(){
        getDeleteItems(this,ID,data);
    });
}

我的最终目标如下:我从表中删除了一些共享点列表项。通常当我创建图表表等时,我会进行调用并将所有数据本地存储在数组中。该数组是创建我正在制作的表的原因。因此理论上,在从sharepoint中删除表数据后,它仍然在我的本地数组中。

这个问题是,当我删除元素(在视觉上显示它们被删除)时,我隐藏了我创建的主表中的父节点的子节点,然后单击以再次显示它,它将显示已删除的项目因为它不是服务器信息而只是本地数组。

对于未来阅读本文的人,我尝试将原始方法转换为JSON字符串,然后使用转义函数。所以...转义(JSON.stringify(data))..这被传递给删除函数。这仅适用于外观。一旦在getDeleteItems函数上解码,它就是我试图删除的原始数据的单独数据。所以在我的情况下,这不会起作用。

然而,将所有内容移动到最初称为鼠标悬停的功能是可行的方法。它允许我到达我需要删除项目的对象。