如何通过一个onclick事件更改两个单独的图像
How can I change two separate images using through one onclick event?
我需要创建一个石头剪刀模拟,用户点击一块石头、一张纸或一把剪刀的图片,同一网页上的一张图片会显示选择,并显示一只石头、纸或剪刀形状的手的图片。然后在这张图片的左边是另一只手,它随机生成这三个形状中的一个。我让onclick事件为用户工作,但是我很难弄清楚如何对随机生成器进行编码。这是我为三个函数(石头、纸、剪刀)中的一个函数编写的代码,但它们的格式都是相同的,只是值不同。提前谢谢。
var computerChoice=Math.random();
function clickRock(computerChoice) {
img= document.getElementById("change1");
img.src="leftRockHand.jpg";
if (computerChoice < 0.3333) {
img=document.getElementById("change2");
img.src="rightRockHand.jpg"
}
else if (computerChoice >= 0.3333 && computerChoice < 0.6666) {
img=document.getElementById("change2");
img.src="rightPaperHand.jpg";
}
else if(computerChoice >= 0.6666) {
img=document.getElementById("change2");
img.src="rightScissorHand.jpg";
}
}
这是我的html
<tr>
<td onclick="clickRock()" id="rockClick"><img src="rock.jpg" alt="Rock"></td>
<td rowspan="3"><img id="change1" src="leftPaperHand.jpg" alt="Left Hand" height="350"></td>
<td rowspan="3"><img id="change2" src="rightRockHand.jpg" alt="Right Rock" height="350"></td>
</tr>
function clickRock(choice1, choice2){
changePicture("change1", choice1);
changePicture("change2", choice2);
}
function changePicture(eleId, computerChoice) {
var img = img=document.getElementById(eleId);
if (computerChoice < 0.3333) {
img.src="rightRockHand.jpg"
}
else if (computerChoice >= 0.3333 && computerChoice < 0.6666) {
img.src="rightPaperHand.jpg";
}
else if(computerChoice >= 0.6666) {
img.src="rightScissorHand.jpg";
}
}
如果在click事件监听器中调用clickRock。
如果只将Math.random()返回的值分配给该变量一次,则数字不会改变。将该赋值移到函数中。
为了消除对小于和大于运算符的需要,您可以使用Math.floor(Math.random()*3)来获取0到2之间的数字。因为您只对一个变量执行相等的运算,所以switch
语句变得更合适。
如果你想让代码更干净,你可以在检查随机整数之前,只将#change2元素分配给img变量一次。
function clickRockAsComputer() {
var computerChoice = Math.floor(Math.random() * 3);
img = document.getElementById("change1");
img.src = "leftRockHand.jpg";
img = document.getElementById("change2");
switch(computerChoice){
case 0:
img.src = "rightRockHand.jpg";
break;
case 1:
img.src = "rightPaperHand.jpg";
break;
case 2:
img.src = "rightScissorHand.jpg";
break;
}
}
它简单地使用max和min来生成任意数量的可能性。
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
alert(getRandomInt(1, 3));
这是一个通用函数,不仅有3种可能性,还有n个数。只需指定最小和最大范围
这是一个小提琴的例子
相关文章:
- 当两个单独的单词被放在目标上时,使用Jquery获取一个值
- 如何通过一个onclick事件更改两个单独的图像
- 为什么动画设置加载在TweenMax中的两个单独的对象文字中
- 画布创建两个单独的动画瀑布对象
- 两个单独的表单,输入具有相同的名称和id
- 从两个单独的函数创建 JQuery 悬停
- 添加混合 javascript 函数,使内容淡入列内的另一个内容/使其适用于两个单独的列
- 在一个函数中使用来自两个单独 JSON 文件的数据
- 开发两个单独的节点应用程序来提供 Web 服务和使用 Web 服务以在浏览器上呈现它是一个好主意吗?
- RequireJS 加载同一个模块两次以获得两个单独的命名空间
- 如何检查两个单独函数的执行结果
- 在两个单独的页面之间创建上滑过渡
- Td 高度在两个单独的桌子上
- 如何组合两个单独的Uint8Array的颜色数据(JPEG)和透明度数据(PNG)
- 在 Three.JS 中对齐来自两个单独对象的面时出现问题
- 将两个单独的元素附加到一个动画脚本
- 在一个字符串中用括号替换两个单独的正则表达式
- 将两个单独的数组组合成一个带有对象的数组
- php或javascript正则表达式-将第一个字母和剩余字符串作为两个单独的值返回
- 对两个单独的图元应用相同的切换