Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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 无法设置属性';src&x27;设置超时时的空值_Javascript - Fatal编程技术网

Javascript 无法设置属性';src&x27;设置超时时的空值

Javascript 无法设置属性';src&x27;设置超时时的空值,javascript,Javascript,这是纸牌游戏的一部分,当6张纸牌中的两张被翻动并匹配时,我需要将它们替换为“clear.png”,这样它们看起来就像消失了一样。如果它们不匹配,我想在1.5秒后用img“back.png”替换它们。一次只能翻转两张牌 当我试图通过flipped访问“src”时,我尝试使用getElementsByTagName“而不是getElementsById”,这一次,没有出现错误,但它没有做任何事情(setTimeout没有超时) 我查看了与此相关的其他问题,但这些帖子中的任何建议似乎都不起作用。谢谢你

这是纸牌游戏的一部分,当6张纸牌中的两张被翻动并匹配时,我需要将它们替换为“clear.png”,这样它们看起来就像消失了一样。如果它们不匹配,我想在1.5秒后用img“back.png”替换它们。一次只能翻转两张牌

当我试图通过flipped访问“src”时,我尝试使用getElementsByTagName“而不是getElementsById”,这一次,没有出现错误,但它没有做任何事情(setTimeout没有超时)

我查看了与此相关的其他问题,但这些帖子中的任何建议似乎都不起作用。谢谢你的帮助。 下面是我的HTML和.js的一部分:

    <!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”
总是错误的(
似乎是
未定义的
)。