Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.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 确定是否单击了id为的元素_Javascript_Html - Fatal编程技术网

Javascript 确定是否单击了id为的元素

Javascript 确定是否单击了id为的元素,javascript,html,Javascript,Html,我试图使用事件侦听器在单击特定元素时触发函数。下面您将看到有3个元素共享“gameselection”类,每个元素都有一个唯一的id 到目前为止,如果我查找已单击的特定类,我已经设法使事件侦听器触发。但我需要修改功能,以便它查找具有类和id组合的元素 以下是元素的HTML: <div class="gameselections"> <div class="gameselection" id="rockdiv"&

我试图使用事件侦听器在单击特定元素时触发函数。下面您将看到有3个元素共享“gameselection”类,每个元素都有一个唯一的id

到目前为止,如果我查找已单击的特定类,我已经设法使事件侦听器触发。但我需要修改功能,以便它查找具有类和id组合的元素

以下是元素的HTML:

<div class="gameselections">
    <div class="gameselection" id="rockdiv">
        <p class="gameselectiontext" id="rockselection">Rock</p>
        <img class="selection" src="images/rock.png">
    </div>
    <div class="gameselection" id="paperdiv">
        <p class="gameselectiontext" id="paperselection">Paper</p>
        <img class="selection" src="images/paper.png">
    </div>
    <div class="gameselection" id="scissorsdiv">
        <p class="gameselectiontext" id="scissorsselection">Scissors</p>
        <img class="selection" src="images/scissors.png">
    </div>
</div>
我知道我需要修改JS以包括两个标准;然而,我不确定那是什么样子。以下是我认为有效的方法:

// Event listener for click
document.addEventListener("click", gameSelectionListener);
// Check and see if the click was on a game selection button (can't apply directly on button as div hidden initially)
function gameSelectionListener(event) {
    let element = event.target;
    console.log(event.target);
    let rock = "rock";
    if (element.classList.contains("gameselection") && element.id.contains("rockdiv")) {
        playRound(rock);
        console.log("submitted rock")
    }
}
下面是使用上述代码在JS控制台中报告的错误:

Uncaught TypeError: element.id.contains is not a function
    at HTMLDocument.gameSelectionListener (main.js:54)
方法contains()不起作用,因为您试图在字符串上执行它

你可以通过

event.target.id
你的if语句可以是这样的

if (element.classList.contains("gameselection") && element.id == "rockdiv") {
    playRound(rock);
    console.log("submitted rock")
}
“contains”是一个在节点上工作的函数

element.id==“rockdiv”
if (element.classList.contains("gameselection") && element.id == "rockdiv") {
    playRound(rock);
    console.log("submitted rock")
}