我正在使用服务器提供的唯一ID以编程方式创建DOM元素。单击它们之一时,需要获取名为posterId
的属性。
我正在尝试通过当前无效的活动。
我尝试使用:
onClick="handlePosterClick(event)
onClick="handlePosterClick(this)
onClick=handlePosterClick(this.posterId)
此函数生成组成整个块的所有Divs和元素:
function createMovieDivForCarrousel(){
var carrousel = '';
for(var j = 0; j < movieGenres.length; j++){
//creates a slider, section title and defines mouseovers
carrousel += '<div class="slider"><h3>'+movieGenres[j]+'</h3><span onmouseover="scrollL()" onmouseout="clearScroll()" class="handle handlePrev active"><i class="fa fa-caret-left" aria-hidden="true"></i></span><div id="scroller" class="row"><div class="row__inner">';
for(var i = 0; i < recommendedMovies.length; i++){
if(recommendedMovies[i].genre[0].toLowerCase() == movieGenres[j].toLowerCase()){
carrousel +='<div class="gui-card"><div class="gui-card__media"><img class="gui-card__img" src="'+recommendedMovies[i].poster+'"/></div><div class="gui-card__details" "posterId="'+recommendedMovies[i].id+'" onClick="handlePosterClick(event)"><div class="gui-card__title">'+recommendedMovies[i].title+'</div></div></div>';
}
}
carrousel += '</div></div><span onmouseover="scrollR()" onmouseout="clearScroll()" class="handle handleNext active"><i class="fa fa-caret-right" aria-hidden="true"></i></span></div>';
}
return carrousel;
}
此函数处理了它应该做的事情,我已取消了不必要的部分,但仅尝试记录该值也不起作用:
function handlePosterClick(e) {
var indexOfClicked = search(e.target.getAttribute("posterId"));
posterArray[indexOfClicked].state = !posterArray[indexOfClicked].state;
}
window.onclick = e => {}
同时包含ID和函数调用的元素是:
<div class="gui-card__details" "posterId="'+recommendedMovies[i].id+'" onClick="handlePosterClick(event)">
作为参考,ID从1到118,并且都是唯一的。
编辑:执行onClick="console.log(this)"
并单击其中一个元素会显示以下内容:
<div class="gui-card__details" "posterid="11" onclick="console.log(this)"><div class="gui-card__title">Manchester by the Sea (2016)</div></div>
删除多余的双引号并使其为posterId
而不是"posterId"
也会产生Uncaught TypeError: Cannot read property 'state' of undefined
。我不确定如何表示,这是代码段的最后状态。
答案 0 :(得分:0)
您可以尝试使用 document.getElementsByName(“ posterId”); 在handlePosterClick()里面
答案 1 :(得分:0)
2个问题:
1.多余的双引号引起了问题。它隐藏了一个不同的问题。首先,删除posterId之前的那些双引号。
2. search
找不到索引,或者索引指向数组中的null / undefined。您需要调试代码的这两部分。