未捕获的类型错误:无法设置未定义的属性'src'...但已定义?

时间:2019-07-20 19:16:42

标签: javascript

我正在学习JavaScript,正在研究将其深入研究的内容,我开始了一个小型且简单的项目,并且试图在按下按钮后切换图像,我已经定义了所需的一切到变量,但是当我单击按钮时,它只会给我错误:Uncaught TypeError:无法设置未定义的属性“ src”,即使我要求它将src属性设置为IS且我不理解为什么会遇到麻烦,我看不到任何问题或原因?

我尝试重新标识HTML元素,并尝试使用不同的元素Js来查看是否遗漏了我遇到的问题,我尝试重新编写代码以消除所有看不到的内容。我已经遍历了其余代码,以检查是否有其他可能干扰执行的错误。

HTML:

<div class="col-md-4" id="coin">
    <img src="images/coin-0.jpg" alt="Coin" id="coin-img" />
    <button id="coin-flip">Flip Coin</button>
</div>

JavaScript:

document.querySelector('#coin-flip').addEventListener('click', function() 
{
    var flip = Math.floor(Math.random() * 2);
    document.querySelector('#coin-img').document.src = 'images/coin-' + 
    flip + '.jpg';
});

基于Math.random的工作原理,我希望它是在执行时更改img src的变量。到目前为止,一切都已经开始进行。

1 个答案:

答案 0 :(得分:0)

怎么了?

由于未定义您在下面一行中写的第二个“文档”,它给您带来未定义的错误。

    document.querySelector('#coin-img').document.src = 'images/coin-' + 

解决方案

我怀疑您是错误地写了第二个“文档”,只是想直接在“ querySelector”而不是第二个“ document”上更改“ src”属性。

这应该作为“ querySelector”返回您要求的HTML元素,在这种情况下为“ img”元素。具有src属性。

document.querySelector('#coin-flip').addEventListener('click', function() 
{
    var flip = Math.floor(Math.random() * 2);
    document.querySelector('#coin-img').src = 'images/coin-' + 
    flip + '.jpg';
});

提供了其他所有设置正确的选项,那么此解决方案应该可以工作。