我有一个两部分的问题,我想创建一个石头剪刀布游戏,允许用户玩直到他输给计算机一次。我将向用户展示一系列图像(石头,纸张,剪刀)。然后,如果用户单击图像,我将突出显示该选择,然后双击以确认他们的选择。
因此,在用户单击“立即播放”后显示的HTML中有此代码:
<div id="playOptionsclassic" style="display: none">
<img id="clickedRock" src="img/rock.jpg" onclick="playClassicWithRock()" dis/>
<img id="clickedPaper" src="img/paper.jpg" onclick="playClassicWithPaper()"/>
<img id="clickedScissors" src="img/scissors.jpg" onclick="playClassicWithScissors()" />
</div>
然后在我的Jquery文件中,我拥有:
$(function () {
$("img").one("click",function() {
$(this).css('border', "solid 2px red");
});
});
我这里遇到的问题是用户现在可以单击多个img。我想要它来切换点击,所以如果我先点击岩石,哦,我改变主意了,我想要剪刀,非突出显示的岩石并突出显示剪刀。还是我只需要单击一下就可以锁定它?
然后如何将“ rock”,“ Paper” Scissors”的值传递到javascript文件中以查看它们是否击败了计算机?
答案 0 :(得分:0)
使用$(this).siblings().css('border','0px')
更改所单击项目的颜色,然后使用playClassicWithScissors(this)
“ this”将元素传递给函数
$(function () {
$("img").on("click",function() {
$(this).siblings().css('border','0px')
$(this).css('border', "solid 2px red");
});
});
function playClassicWithRock(ele){
alert($(ele).attr('id'));
}
function playClassicWithPaper(ele){
alert($(ele).attr('id'));
}
function playClassicWithScissors(ele){
alert($(ele).attr('id'));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="playOptionsclassic" style="display: block">
<img id="clickedRock" src="img/rock.jpg" onclick="playClassicWithRock(this)" dis/>
<img id="clickedPaper" src="img/paper.jpg" onclick="playClassicWithPaper(this)"/>
<img id="clickedScissors" src="img/scissors.jpg" onclick="playClassicWithScissors(this)" />
</div>
答案 1 :(得分:0)
首先,您应该更喜欢将类用于单独的CSS样式。与调整CSS属性相比,添加和删除类通常更容易(并且在维护方面更为健壮)。
一个简单的方法是找到一个匹配所有三个图像的选择器。那么您可以在将其添加到单击的图像之前,从所有图像(无论是否具有)中删除“选定的”类。 jQuery使这非常容易。
另一种典型的方法是存储选择,因此您可以在选择新元素之前显式取消选择该元素。
答案 2 :(得分:0)
<div id="playOptionsclassic" style="display: none">
<img id="clickedRock" src="img/rock.jpg" class="game-opt-img" data-val="rock" dis/>
<img id="clickedPaper" src="img/paper.jpg" class="game-opt-img" data-val="paper"/>
<img id="clickedScissors" src="img/scissors.jpg" class="game-opt-img" data-val="scissors" />
</div>
然后在您的JavaScript中
$(function(){
$(".game-opt-img").on("click", function() {
$(".game-opt-img").off("click"); // remove all image's click event
var val = $(this).data("val"); // get the value of the image that the user choose.
});
});
答案 3 :(得分:0)
您可以在CSS中创建一个名为.active
的类,该类将边框添加到图像。因此,单击图像时,您需要做的就是从所有图像中删除.active
类,然后将.active
添加到您单击的图像中。
这可以通过执行以下操作来实现:
$(function() {
$("#playOptionsclassic div").on("click", function() {
$("#playOptionsclassic div").removeClass('active');
$(this).addClass('active');
});
});
.active {
border: 2px solid red;
}
/* Styles for example */
#playOptionsclassic div {
height: 100px;
width: 100px;
background: black;
color: white;
margin: 1%;
display: inline-block;
text-align: center;
box-sizing: border-box;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="playOptionsclassic">
<!-- Images replaced with divs for example -->
<div id="clickedRock">Rock img</div>
<div id="clickedPaper">Paper img</div>
<div id="clickedScissors">Scissors img</div>
</div>
答案 4 :(得分:0)
首先,您可以为每个图像添加一个预定义的类,并为它们表示的内容(岩石,纸张,剪刀)分配一个数据属性,如下所示:
<div id="playOptionsclassic" style="display: none">
<img class="option" src="img/rock.jpg" data-option="rock"/>
<img class="option" src="img/paper.jpg" data-option="paper"/>
<img class="option" src="img/scissors.jpg" data-option="scissors"/>
</div>
然后您可以在CSS中创建一个类,在其中您将具有单击图像的样式:
.active {
border: 2px solid red;
}
在您的JavaScript中,当用户单击其中一个选项时,将active
类从其他选项中删除,并将其添加到该图像中。
然后双击它们,检查是否选择了一个选项并执行必要的操作。
$(function() {
$("img.option").on("click", function() {
$("img.option.active").removeClass("active");
$(this).addClass("active");
});
$("img.option").on("dblclick", function() {
var selectedOption = $("img.option.active");
// Check if an option was selected.
if (selectedOption.length) {
// Save the name of the option (rock, paper or scissors) in a variable.
var optionName = selectedOption.data("option");
// Perform your action here.
} else {
alert("Please select an option.");
}
});
});