从动态创建的链接执行JavaScript
我有以下代码:从动态创建的链接执行JavaScript,javascript,Javascript,我有以下代码: // video listing for (var i = 0; i < videos.length; i++) { var videoid = videos[i].id.videoId; //more variables declared ..... document.getElementById('videos').innerHTML += "<div>" + "<a href='#' onclick='showVi
// video listing
for (var i = 0; i < videos.length; i++) {
var videoid = videos[i].id.videoId;
//more variables declared .....
document.getElementById('videos').innerHTML += "<div>"
+ "<a href='#' onclick='showVideo(); return false'>" + videotitle + "</a>" + videodescription + ""
+ "</div>";
});
但是我有一个错误。使用内联JS将变量传递给回调不是一个好的实践 使用jQuery,它将像$'elementId'一样简单。单击,回调 或者,只使用JS:document.getElementById'elementId'.onclick=callback 在这两种情况下,回调都定义为函数回调{…} 在showVideo中,我只是触发了一个警报,它就工作了。但是我怎样才能将参数(例如videoid)传递给函数呢?我试着用
+ "<a href='#' onclick='showVideo(" + videoid + "); return false'>" + videotitle + "</a>" + videodescription + ""
实际上,为了诊断问题,您需要显示更多代码或提供错误。它可以是任何东西,但请确保:
您的函数收到一个值
您的id不是整数
您将值包装在一个引号字符串onclick=func\++;
范例
严格使用;
设置;
//视频列表
对于var i=0,n=videos.length;i<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Loops</h2>
<p id="videos"></p>
<script>
var videos = [
{"id":"v1","title":"vedio1", "description":"This is 1st vedio"},
{"id":"v2","title":"vedio2", "description":"This is 2st vedio"},
{"id":"v3","title":"vedio3", "description":"This is 3st vedio"},
{"id":"v4","title":"vedio4", "description":"This is 4st vedio"}
];
videos.forEach (function(item, index) {
document.getElementById('videos').innerHTML += "<div><a href='#' onclick='showVideo(""+ item.id +""); return false;'>" + item.title + "</a>" + item.description + "</div>";
});
function showVideo(vedioId){
debugger;
console.log(vedioId);
alert("I am vedio "+vedioId);
}
</script>
</body>
</html>
我猜是这条线
var videoid = videos[i].id.videoId;
有一个id属性很奇怪,而且它是一个有另一个id的对象。我猜你只需要
var videoid = videos[i].id;
在dev的下面添加这一行,以确保您有一个id
if (typeof videoid === 'undefined') { throw new Error('could not find id for video ' + i); }
哪个错误?添加一些描述。你的例子是如何做的。在括号中传递参数ID必须以字母开头;否则,什么错误?是的,这是+videoid+而不是+videoid+。它现在可以工作了。我已经在我的示例中添加了+videoid+,请检查我帖子中添加的链接。是的,这是它\+videoid+\而不是+videoid+,它现在可以工作,不引用它,它会将您的值视为一个变量,很可能是未定义的。