我只是在学习 javascript,所以我认为这相对简单,但它已经让我烦恼了一段时间。
我有一个函数,它只显示我从 AJAX 响应调用的一些文本。这是我的代码。
if(this.responseText != null)
{
var text = "<ul>";
var object = eval("(" + this.responseText + ")");
var track;
for (var i = 0; i < object.length; i++)
{
track = object[i];
text += "<li><img src=\"" + track.artwork_url + "\"/>";
text += track.title;
text += "<ul><li><a href=\"#\" onclick=\"playTrack(" + track + ");return false;\">Play</a></li>"
text += "<li><a href=\"" + track.download_url + "?client_id=" + clientId + "\">Download</a></li></ul>"
text += "</li>";
}
text += "</ul>";
document.getElementById("content").innerHTML = text;
}
function playTrack(track)
{
document.getElementById("content").innerHTML = "This has worked";
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢将 track 对象传递给函数 playTrack(现在是一个简单的函数,只显示一些文本)。我收到错误“Uncaught SyntaxError: Unexpected identifier”
如果我传入 track.id(或任何其他属性),则一切正常,但我不明白。
谢谢你的帮助,
B先生
你不能传递这样的对象。 track被转换为字符串,然后你的playTrack函数调用失败,因为语法错误。它将被渲染(类似的东西onclick=playTrack([Object object])显然不是有效的 JavaScript)。既然你知道它有效,那么仅仅传递 track.id 有什么问题吗?