Javascript 无法设置属性';src&x27;设置超时时的空值
这是纸牌游戏的一部分,当6张纸牌中的两张被翻动并匹配时,我需要将它们替换为“clear.png”,这样它们看起来就像消失了一样。如果它们不匹配,我想在1.5秒后用img“back.png”替换它们。一次只能翻转两张牌 当我试图通过flipped访问“src”时,我尝试使用getElementsByTagName“而不是getElementsById”,这一次,没有出现错误,但它没有做任何事情(setTimeout没有超时) 我查看了与此相关的其他问题,但这些帖子中的任何建议似乎都不起作用。谢谢你的帮助。 下面是我的HTML和.js的一部分:Javascript 无法设置属性';src&x27;设置超时时的空值,javascript,Javascript,这是纸牌游戏的一部分,当6张纸牌中的两张被翻动并匹配时,我需要将它们替换为“clear.png”,这样它们看起来就像消失了一样。如果它们不匹配,我想在1.5秒后用img“back.png”替换它们。一次只能翻转两张牌 当我试图通过flipped访问“src”时,我尝试使用getElementsByTagName“而不是getElementsById”,这一次,没有出现错误,但它没有做任何事情(setTimeout没有超时) 我查看了与此相关的其他问题,但这些帖子中的任何建议似乎都不起作用。谢谢你
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title></title><style>
img {margin: 10px;}
</style>
<script src="matching.js" defer></script>
</head>
<body>
<div id="matchingcards"></div>
<input id="restart" type="submit" value="Restart Game">
</body>
</html>
<script>
......
var flipped = [];
function flipcards(card, value) {
if(card.getAttribute("src") == "back.png" && flipped.length < 2){
console.log(card.getAttribute("src"))
console.log("get attribute back.png")
card.src = value;
if(flipped.length == 0){ flipped.push(value); }
else if(flipped.length == 1) {
flipped.push(value);
if(flipped[0].charAt(0) == flipped[1].charAt(0)) {
setTimeout(() => {
document.getElementById(flipped[0]).src = "clear.png";
document.getElementById(flipped[1]).src = "clear.png";
flipped = [];
}, 1500);
} else {
if(flipped.length == 2){
setTimeout(() => {
document.getElementById(flipped[0]).src = "back.png";
document.getElementById(flipped[1]).src = "back.png";
flipped = [];
}, 1500);
}
}
}
}
}
</script>
img{margin:10px;}
......
var翻转=[];
功能翻转卡(卡片、值){
if(card.getAttribute(“src”)=“back.png”&&flipped.length<2){
console.log(card.getAttribute(“src”))
log(“getattributeback.png”)
card.src=值;
如果(flipped.length==0){flipped.push(value);}
else if(flipped.length==1){
翻转。推(值);
如果(翻转[0]。字符(0)=翻转[1]。字符(0)){
设置超时(()=>{
document.getElementById(翻转[0]).src=“clear.png”;
document.getElementById(翻转[1]).src=“clear.png”;
翻转=[];
}, 1500);
}否则{
如果(翻转的长度==2){
设置超时(()=>{
document.getElementById(翻转[0]).src=“back.png”;
document.getElementById(翻转[1]).src=“back.png”;
翻转=[];
}, 1500);
}
}
}
}
}
什么是值
?是否有id
属性设置为值
的标记?您可以发布标记的相关部分吗?我想部分问题在于您使用getElementById
的方式--请查看其文档:谢谢@Hector我添加了html,没有添加e的值。@ggorlen谢谢你的提示。在我询问if(flipped.length==1)之后,我按下flipped[1],当我控制台.log(flipped[0]和[1])的时候,flipped[1]中现在有两个元素:if(flipped[0]。charAt(0)==flipped[1]。charAt(0)),我可以在控制台中看到翻转卡片的值。据我所知,仍然不完全清楚您正在做什么或如何做。没有调用flipcards
和(再次,据我所知)card。getAttribute(“src”)=“back.png”
总是错误的(卡
似乎是未定义的
)。