0

我试图通过我网页上的 onclick() 函数将 Javascript 从一个函数传递到下一个函数:

在第一个功能中,我正在编写一个表格,其中一部分创建了这个单元格。

table += "<td><a onclick=assetDetails(assetId) href='#'>"+title+"</a></td>";

这是获取变量title并将其作为超链接传递到我的 HTML 页面,以便在单击时执行assetDetails 函数。

function assetDetails(assetId){ console.log(assetId); }

我的assetDetails 函数的格式如上。

当我单击超链接时,它告诉我assetId 变量身份不明。

我试过这个:

table += "<td><a onclick=assetDetails("+assetId+") href='#'>"+title+"</a></td>";

这传递了我的变量的值,并告诉我它也是未知的。

有没有办法做到这一点?

4

4 回答 4

0

您应该将 assestId 定义为标签的属性,并在您的 JS 中通过 getAttribute DOM 函数访问该值。

于 2013-10-23T18:21:58.557 回答
0

您可能应该assetId用这样的引号将变量包装起来:

table += "<td><a onclick=assetDetails('"+assetId+"') href='#'>"+title+"</a></td>";
于 2013-10-23T18:25:47.443 回答
0
table += "<td><a onclick=assetDetails(assetId) href='#'>"+title+"</a></td>";

当它在 html 中时,assetId 将不存在于范围中,除非它是一个全局变量,在这种情况下为什么要传递它。也许你正试图这样做。

table += "<td><a onclick=assetDetails('" + assetId + "') href='#'>"+title+"</a></td>";

我认为您还缺少一些引号。

我建议使用 document.createElement("td") 创建表 td。这样,您就可以使用 addEventListener 为其分配一个 onlick。

于 2013-10-23T18:26:09.053 回答
0

您错过了 onclick 函数中的引号,请尝试:

table += "<td><a onclick=assetDetails('"+assetId+"') href='#'>"+title+"</a></td>";

这应该有效,因为当您创建表字符串时,“assesId”是已知的并插入到字符串中,例如:

var assetId = 'test';
var title = 'title';
var tsTest = "<td><a onclick=\"assetDetails('"+assetId+"')\" href='#'>"+title+"</a></td>";

变成:

<td><a onclick="assetDetails('test')" href='#'>title</a></td>

但是:这是这样做的旧方法。您可以更好地使用 dom api(document.createElement 等)或使用 jQuery 之类的库:

var link = jQuery("<a href='#'>title</a>");
link.click(function() {
    // assetId is still known when clicked because of js closure
    console.log(assetId);
})
于 2013-10-23T18:31:52.280 回答