2013-10-23 36 views
0

我试图从一个函数通过我的一个onclick()函数在我的网页通过JavaScript来下一个:你能从一个函数通过JavaScript变量到另一个使用HTML

在我写的第一功能可按表和其中一部分创建此单元格。

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>";

这非我变量的值,并告诉我,这是不明也。

有没有办法做到这一点?

+0

你知道一个局部变量和全局的区别? – Robert

回答

0

你或许应该这样引号包裹assetId变量:

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

这工作就像一个魅力!谢谢! – MonsterWimp757

0

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

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

当这是在HTML assestId不会存在,除非它是一个全局变量,在这种情况下,为什么它传递的范围。也许你正在试图做到这一点。

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

我想你也缺少一些引号。

我建议使用document.createElement(“td”)创建表td。这样你就可以使用addEventListener为它分配一个onlick。

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); 
}) 
相关问题