javascript - 使用 .getElementsByClassName 访问多个弹出窗口

标签 javascript arrays popup

我正在尝试使用以下 JavaScript 创建各种弹出窗口。单击文本时会弹出图像。问题是,当我单击任何文本容器时,所有弹出图像都会出现。我知道我错过了一些明显的东西。任何帮助将非常感激。 JS代码如下:

function myFunction() {

var popup = document.getElementsByClassName("myPopup");

for(var i=0; i<popup.length; i++) {

popup[i].classList.toggle('show');
}
}

HTML:

<div class="popup" onclick="myFunction()"><span class="castName">Viola,</span>
<span class="popuptext myPopup"><img src=Viola_1.jpg        
style="width:300px;height:100%;" alt="Viola"><p>Miss Ellen Terry as Viola, mid   
to late 19th century</p></span></div>

最佳答案

您的函数获取元素列表,并将类“show”切换到每个元素,而不是您想要的元素。您必须将元素传递给函数。

您可以更改每个 div 的 onclick 事件:

<div class="popup" onclick="myFunction()">

至:

<div class="popup" onclick="myFunction(this)">

然后在你的 JavaScript 中

function myFunction(element){
    if (element){ //If the element is passed into this function
        element.getElementsByClassName("myPopup")[0].toggle('show');
    }
}

关于javascript - 使用 .getElementsByClassName 访问多个弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40518694/

相关文章:

java - Android studio Webview 弹出窗口内

javascript - 如何在选择某个选项后显示文本区域

javascript - 使用 Nightmare.js 根据类名选择和单击元素

javascript - 我们可以用 ES6 模板替换现有的 JS 模板解决方案吗?

javascript - 运行 nightwatchjs 测试时出现 TypeError [ERR_UNESCAPED_CHARACTERS]

arrays - VBS : Counting number of items in an Array

c++ - 如何在构造函数中初始化数组?

javascript - 创建 Javascript 数组对象

javascript - 在 asp.net 弹出窗口中打开我的新页面

node.js - Node webkit 和 Google OAuth