我的脚本中有两个函数:
function ShowAltTag(){
var CurrentImage = $("#ShowImage img").attr("src");
if( $.browser.msie ) {
IECurrentImage (CurrentImage);
}
if ($(".ImageRoller img[src='" +CurrentImage+ "']").attr("alt")){
var alt = $(".ImageRoller img[src='" +CurrentImage+ "']").attr("alt");
$("#ShowImage").append("<div class='alt'><span>" +alt+ "</span></div>");
$("#ShowImage div.alt").fadeIn("fast");
}
}
function IECurrentImage (CurrentImage)
{
var loc = document.location.href;
CurrentImage = CurrentImage.replace(/\ /g, "%20");
CurrentImage = loc.substring( 0, loc.lastIndexOf( '/' ) ) +'/'+ CurrentImage;
}
如果浏览器是IE,它会启动IECurrentImage函数,但之后脚本应该使用当前图像的新值来生成ShowAltTag的其余部分。
这甚至可能吗?
提前致谢
答案 0 :(得分:2)
您需要使用return
关键字返回新值,并将变量分配给第一个函数中的CurrentImage
变量。
function IECurrentImage (CurrentImage)
{
var loc = document.location.href;
CurrentImage = CurrentImage.replace(/\ /g, "%20");
return loc.substring( 0, loc.lastIndexOf( '/' ) ) + '/' + CurrentImage;
}
function ShowAltTag()
{
var CurrentImage = $("#ShowImage img").attr("src");
if ( $.browser.msie ) {
CurrentImage = IECurrentImage(CurrentImage);
}
// Etc.
}
即使两个函数中的变量具有相同的名称,它们实际上也是不同的变量,因为每个函数都有自己的变量范围。
或者,您可以删除现有的var CurrentImage
语句,并将其放在这两个函数的外部和前面。这将使它成为一个全局变量。除非实际需要,否则不应使用全局变量。
您可能希望在JavaScript中阅读this article about local and global variables。