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

标签 javascript function

我的脚本中有 2 个函数:

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 ,但之后脚本应该使用 Current Image 的新值来创建 ShowAltTag 的其余部分。

这可能吗?

提前致谢

最佳答案

您需要使用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 语句并将其放在这两个函数的外部和前面。这将使它成为一个全局变量。除非确实有必要,否则不应使用全局变量。

您可能想阅读this article about local and global variables在 JavaScript 中。

关于javascript - 完成第二个功能后重新启动第一个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2056721/

相关文章:

r - 在函数中调用其他列的控制流程

javascript函数,如何获取document.write中的变量?

vb.net - Sub 如何更新它的参数?

javascript - 在悬停和鼠标离开时对 div 进行动画处理并延迟

algorithm - 在 VBScript 中将一个范围的值映射到另一个范围

javascript - Angular/ Material 模式对话框不适用于谷歌地图的形状点击

javascript - 事件回调的最佳位置在哪里? (匿名或具名)

javascript - Ionic Angular JS $routeProvider 加载 ionic 列表不会滚动

javascript - DOM 与 PHP 输出不匹配

Javascript:如何覆盖某些类中的公共(public)方法?