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

问题描述:

我知道这是之前问过的,但没有给出任何答案来解决我的问题。很显然,很多人都在使用Chrome和Safari获得同样的错误,所以我认为如果可能的话,一个解释的答案将是合适的。我的JavaScript老师从来没有教过我们只会导致我们错误的道路,并说忘记,所以我不明白我有的代码,但我必须让它在所有浏览器中工作。未捕获的类型错误:无法设置未定义的属性'src'

这里是我的代码:

<div class="gallery" align="center"> 
<h3>Simple and Effective Photo Gallery with HTML and JavaScript</h3><br/> 
<div class="thumbnails"> 
<img onmouseover="preview.src=img1.src" id="img1" src="img1.jpg" alt="Image Not Loaded"/> 
<img onmouseover="preview.src=img2.src" id="img2" src="img2.jpg" alt="Image Not Loaded"/> 
<img onmouseover="preview.src=img3.src" id="img3" src="img3.jpg" alt="Image Not Loaded"/> 
<img onmouseover="preview.src=img4.src" id="img4" src="img4.jpg" alt="Image Not Loaded"/> 
<img onmouseover="preview.src=img5.src" id="img5" src="img5.jpg" alt="Image Not Loaded"/> 
<img onmouseover="preview.src=img6.src" id="img6" src="img6.jpg" alt="Image Not Loaded"/> 
</div><br/> 
<div class="preview" align="center"> 
<img id="preview" src="img1.jpg" alt="No Image Loaded"/> 
</div> 
</div> 

请帮助!

+0

替换'preview.src'与'的document.getElementById( “预览”)src',看看有没有什么帮助。当然,统一的功能会更好。 – Blazemonger

+0

下面是正确的路径:[MDN JavaScript指南](https://developer.mozilla.org/en/JavaScript/Guide) –

document.getElementById("preview").src = "img1.jpg"; 

您不能在Javascript中使用元素的名称。您必须获取与该元素对应的DOM对象:

onmouseover="document.getElementById('preview').src=this.src" 
+0

不幸的是,IE为具有ID的元素创建全局变量。 –

您不能更改那样的src。而是使用:

document.getElementById('preview').src=.... 

这里是它最简单的形式:)

<script> 
var prev; 
function setPrev(img) { 
prev = prev || document.getElementById('preview'); 
prev.src = img.src; 
return false; 
} 
</script>  
<div class="gallery" align="center"> 
<h3>Simple and Effective Photo Gallery with HTML and JavaScript</h3><br/> 
    <div class="thumbnails"> 
     <img onmouseover="setPrev(this)" id="img1" src="img1.jpg" alt="Image Not Loaded"/> 
     <img onmouseover="setPrev(this)" id="img2" src="img2.jpg" alt="Image Not Loaded"/> 
     <img onmouseover="setPrev(this)" id="img3" src="img3.jpg" alt="Image Not Loaded"/> 
     <img onmouseover="setPrev(this)" id="img4" src="img4.jpg" alt="Image Not Loaded"/> 
     <img onmouseover="setPrev(this)" id="img5" src="img5.jpg" alt="Image Not Loaded"/> 
     <img onmouseover="setPrev(this)" id="img6" src="img6.jpg" alt="Image Not Loaded"/> 
    </div> 
    <br/> 
    <div class="preview" align="center"> 
    <img id="preview" src="img1.jpg" alt="No Image Loaded"/> 
    </div> 
    </div>