2013-01-02 43 views
0

当我使用HTML#1时,多个ID可以正常工作,但在使用HTML#2时无法正常工作。 Chrome网络控制台显示多个“document.getElementById”脚本不起作用

>> "Uncaught TypeError: Cannot call method 'setAttribute' of null ".

在HTML#2我删除

<div id="0001"><a href="#"">LOGIN</a></div>,以及浏览器不工作了。

HTML#1

<html> 
<head> 
<title>Index</title> 
</head> 
<body> 

<div id="0001"><a href="#"">LOGIN</a></div> 
<div id="0002"><a href="#"">GO</a></div> 
<div id="0003"><a href="#"">VISIT</a></div> 
<div id="0004"><a href="#"">EXPLORE</a></div> 
<div id="0005"><a href="#"">FUNNY PICS</a></div> 
<script> 
var element = document.getElementById("0001"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/1.html\''); 

var element = document.getElementById("0002"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/2.html\''); 

var element = document.getElementById("0003"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/3.html\''); 

var element = document.getElementById("0004"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/4.html\''); 

var element = document.getElementById("0005"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/5.html\''); 
</script> 

</body> 
</html> 

HTML#2

<html> 
<head> 
<title>Index</title> 
</head> 
<body> 

<div id="0002"><a href="#"">GO</a></div> 
<div id="0003"><a href="#"">VISIT</a></div> 
<div id="0004"><a href="#"">EXPLORE</a></div> 
<div id="0005"><a href="#"">FUNNY PICS</a></div> 
<script> 
var element = document.getElementById("0001"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/1.html\''); 

var element = document.getElementById("0002"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/2.html\''); 

var element = document.getElementById("0003"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/3.html\''); 

var element = document.getElementById("0004"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/4.html\''); 

var element = document.getElementById("0005"); 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/5.html\''); 
</script> 

</body> 
</html> 
+2

您正在使用的ID删除0001格,然后寻找它。因此它给出了错误。 –

+0

等待...你想使用'var元素= document.getElementById(“0001”); ...'当'#0001'确实存在** NOT **吗? –

+0

仅供参考,标题为SCRIPT的帖子无效 - 请修正它倾向于关闭SO社区。 –

回答

3

整体概念差。如果您有链接,请使用链接。直接无脚本(适合所有​​浏览器和搜索引擎优化)或更改HREF或LINK的onclick

也别有数字ID

DEMO

<html> 
<head> 
<title>Index</title> 
<script type="test/javascript"> 
var myLinks = [ 
'http://bing.com/search?q=go', 
'http://bing.com/search?q=visit', 
'http://bing.com/search?q=explore', 
'http://bing.com/search?q=funny%20pics' 
]; // note no comma on the last item 
window.onload=function() { 
    for (var i=0;i<myLinks.length;i++) { 
// EITHER document.getElementById("d"+i).getElementsByTagName("a")[0]).href=myLinks[i]; 
// OR 
     document.getElementById("d"+i).getElementsByTagName("a")[0].onclick=(function(idx) { 
     var idx = i; 
     return function() { // closure 
     location=myLinks[idx]; 
     return false; // cancel href 
     } 
    })(i);  
    } 
} 
</script> 
</head> 
<body> 

<div id="d0"><a href="#"">GO</a></div> 
<div id="d1"><a href="#"">VISIT</a></div> 
<div id="d2"><a href="#"">EXPLORE</a></div> 
<div id="d3"><a href="#"">FUNNY PICS</a></div> 

</body> 
</html> 
+0

先生,它不适用于Chrome和Firefox。为什么我不知道.. – BPP

+0

离开它PLZ。但我想知道是否有任何脚本将存储大量的链接(即可能是.jpg或.mp3文件),我可以很容易地插入像这样下载 - '

'就像..? – BPP

+0

谢谢先生,并试图找出这个脚本“我想知道是否有任何脚本将存储大量的链接(这可能是.jpg或.mp3文件),我可以很容易地插入像这样下载 - '

'就像..? “” – BPP

0

你需要先检查该元素为空或不是。

HTML#2

<html> 
<head> 
<title>Index</title> 
</head> 
<body> 

<div id="0002"><a href="#"">GO</a></div> 
<div id="0003"><a href="#"">VISIT</a></div> 
<div id="0004"><a href="#"">EXPLORE</a></div> 
<div id="0005"><a href="#"">FUNNY PICS</a></div> 
<script> 
var element = document.getElementById("0001"); 
if(element!=null) 
{ 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/1.html\''); 
} 
var element = document.getElementById("0002"); 
if(element!=null) 
{ 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/2.html\''); 
} 
var element = document.getElementById("0003"); 
if(element!=null) 
{ 
element.setAttribute('onclick', 'window.location.href=\'http://site.com/3.html\''); 
} 
var element = document.getElementById("0004"); 
if(element!=null) 
{  
element.setAttribute('onclick', 'window.location.href=\'http://site.com/4.html\''); 
} 
var element = document.getElementById("0005"); 
if(element!=null) 
{  
element.setAttribute('onclick', 'window.location.href=\'http://site.com/5.html\''); 
} 
</script> 

</body> 
</html> 
相关问题