求教一个匿名函数传参问题。
实现一个简单的相册功能:点击缩略图后,在指定位置呈现相应的原图。
html:
<html>
<head>
<script type="text/javascript" src="photoShow.js"></script>
<link rel="stylesheet" href="photoShow.css" type="text/css" />
</head>
<body>
<ul id="pho">
<li>
<a href="pics/img (1).jpg" class="show" title:="sunset">
<img src="pics/img (1).jpg" class="img"></img>
</a>
</li>
<li>
<a href="pics/img (2).jpg" class="show" title="Water lilies">
<img src="pics/img (2).jpg" class="img"></img>
</a>
</li>
<li>
<a href="pics/img (3).jpg" class="show" title="winter">
<img src="pics/img (3).jpg" class="img"></img>
</a>
</li>
<li>
<a href="pics/img (4).jpg" class="show" title="blue hills">
<img src="pics/img (4).jpg" class="img"></img>
</a>
</li>
</ul>
<img id="placeHolder" ></img>
</body>
</html>
javascript:
window.onload=addEvent;
function show(picUrl){
var placeHolder=document.getElementById("placeHolder");
placeHolder.setAttribute("src",picUrl);
return false;
}
function addEvent(){
var links=document.getElementById("pho").getElementsByTagName("a");
for(var i=0; i<links.length; i++)
{
links[i].onclick=function(){
links[i].onclick=show(links[i].getAttribute("href"));
//return show(this.getAttribute("href")) };
}
}
如上,在用匿名函数传值的时候,我直接取到当前的<a>即links[i]并直接将其href属性以字符串形式传送,结果是在点击缩略图时直接切换到一个新的页面显示图片,而不是在当前页面的指定位置显示。
而如果我换成用this来传其href属性,则能够在当前页显示大图。
这两种传值方式有什么不同呢? 不都是传递一个用来表示图片url的字符串信息么????------解决方案--------------------
HTML code
<html>
<head>
<script type="text/javascript" src="photoShow.js"></script>
<link rel="stylesheet" href="photoShow.css" type="text/css" />
</head>
<body>
<ul id="pho">
<li>
<a href="http://avatar.profile.csdn.net/B/8/3/2_string_.jpg" class="show" title:="sunset">
<img src="http://avatar.profile.csdn.net/B/8/3/2_string_.jpg" class="img" width="20" />
</a>
</li>
<li>
<a href="http://avatar.profile.csdn.net/5/1/F/2_cnlei.jpg" class="show" title="Water lilies">
<img src="http://avatar.profile.csdn.net/5/1/F/2_cnlei.jpg" class="img" width="20" />
</a>
</li>
</ul>
<img id="placeHolder" ></img>
<script type="text/javascript">
window.onload=addEvent;
function show(picUrl){
var placeHolder=document.getElementById("placeHolder");
placeHolder.setAttribute("src",picUrl);
return false;
}
function addEvent(){
var links=document.getElementById("pho").getElementsByTagName("a");
//匿名函数
/*
for(var i=0; i<links.length; i++) {
links[i].onclick=(function (i) {
return function(){
show(links[i].getAttribute("href"));
return false;