完成第二个功能后重新启动第一个功能

时间:2010-01-13 12:58:40

标签: javascript function

我的脚本中有两个函数:

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的其余部分。

这甚至可能吗?

提前致谢

1 个答案:

答案 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