Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在循环Javascript/jquery中构建onclick_Javascript - Fatal编程技术网

在循环Javascript/jquery中构建onclick

在循环Javascript/jquery中构建onclick,javascript,Javascript,我想做的是: 动态构建一个附加到img标记的onclick事件,并传递3个值。问题是onclick在循环中,因此传递的值的值根据它们在循环中的位置而变化 通过将一个值附加到img id,我成功地获得了一个传递值,但是我不知道如何传递另外两个值 newElement.innerHTML = '<img id="'+ id + '" class="Videoimg" onclick="myFunction(this.id,\"" + VideoTitlePlayer + "\","' + Vi

我想做的是:

动态构建一个附加到img标记的onclick事件,并传递3个值。问题是onclick在循环中,因此传递的值的值根据它们在循环中的位置而变化

通过将一个值附加到img id,我成功地获得了一个传递值,但是我不知道如何传递另外两个值

newElement.innerHTML = '<img id="'+ id + '" class="Videoimg" onclick="myFunction(this.id,\"" + VideoTitlePlayer + "\","' + VideodescPlayer + '")" src="' + thumbnail +'"><div id="VideoNames" class="VideoTitle">'+ title +'<br><div class="VideoDescription">' + desc + '</div></div>';

我需要一些方法将videoID、video Title和video desc构建到链接中,这样当单击img链接时,它会将所有3个都传递给运行youtube api的函数,只需使用数据id、数据视频标题、数据其他道具等。然后单击onclick=myFunctionthis.dataset,…

,因为您有jQuery,可以避免使用onclick,而使用jQuery选择器和事件处理程序

创建元素后,使用jQuery选择器捕获它们。更好的是,在使用委托事件样式的容器上使用一个

不过,您可能需要稍微更改标记以获取字符串

$('.container').on('click', 'img', function(e) {
  var $el = $(this);
  myFunction(this.id, $el.find('.VideoTitle').text(), $el.find('. VideoDescription').text());
});

使用这种格式,您可以创建一个支持所有元素的事件处理程序。

也许您应该发布整个循环,这样我们就可以理解您在说什么了?jquery不是我的第一语言lol,但这将如何允许我使用每个标题和描述构建菜单?@Seamuscarke这不会构建菜单。这仍然是分开进行的。我将更新我的答案以提供更多详细信息。我尝试过这个,但当onclick中引用this.data-video-title和data-other-prop时,它没有触发,完全是我的错,我试图传递值,接受了你的解决方案,而不是传递这个。dataset我只是传递了整个对象onclick=myFunctionthis.dataset并进行了处理,多谢谢谢默斯
function displayVideoResult(videoSnippet, VideoPlay) 
{ var title = videoSnippet.title;
var desc = videoSnippet.description;
var thumbnail = videoSnippet.thumbnails.default.url;
var id = VideoPlay;

var newElement = document.createElement("div");
newElement.setAttribute("class", "VideoContainerCSS");
    // Set the value to what you want
  newElement.innerHTML = '<img id="'+ id + '" class="Videoimg" onclick="myFunction(this.id)" src="' + thumbnail +'"><div id="VideoNames" class="VideoTitle">'+ title +'<br><div class="VideoDescription">' + desc + '</div></div>';

document.getElementById("results").appendChild(newElement);
}
$('.container').on('click', 'img', function(e) {
  var $el = $(this);
  myFunction(this.id, $el.find('.VideoTitle').text(), $el.find('. VideoDescription').text());
});