从动态创建的链接执行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;ibar video我认为您在innerHTML绑定上犯了错误。。。请尝试以下代码:

<!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(&quot;"+ item.id +"&quot;); 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+,它现在可以工作,不引用它,它会将您的值视为一个变量,很可能是未定义的。