如何在onclick函数在javascript中触发之前运行href =“#var = something”?

时间:2010-05-20 02:22:35

标签: c# asp.net javascript jquery visual-studio

我正在使用下面的javascript在asp.net c#

中更改aspx上的图像
<script language="JavaScript" type="text/javascript">        
        var updateImageWhenHashChanges = function()
        {
            theImage = document.getElementById("ctl00_ContentPlaceHolder1_Image1a");
            if(window.location.hash == "#size=2")
            {
              theImage.src = "<%# Eval("realfilename", "/files/l{0}") %>";
            }
            else if(window.location.hash == "#size=3")
            {
              theImage.src = "<%# Eval("realfilename", "/files/{0}") %>";
            }
            else if(window.location.hash == "#size=1")
            {
              theImage.src = "<%# Eval("fullthumbname", "/thumbnails/{0}") %>";
            }
            else 
            {

            }
        }       
</script>

这是我用链接调用它的方式

<a href="#size=3" onclick="updateImageWhenHashChanges();">test</a>

问题是它只能做我在第二次点击链接时所期待的,因为它似乎在href之前点击了火,所以我第一次放置var而第二次我是实际上得到我想要的东西。

有谁知道我怎么解决这个问题?我试图在每次点击时改变图像

4 个答案:

答案 0 :(得分:3)

也许你可以用javascript:void(0)替换你的href,然后在onclick()脚本的末尾处理链接的“自然”点击行为。

答案 1 :(得分:0)

您是否尝试过像onmouseup或onunload这样的其他活动?

答案 2 :(得分:0)

您应该将当前锚点的href传递给函数调用,然后在if语句中使用它,然后返回false以便不使用默认行为。

var updateImageWhenHashChanges = function(pChoice) 
    { 
        theImage = document.getElementById("ctl00_ContentPlaceHolder1_Image1a"); 
        if(pChoice == "size2")
        { 
// more lines of picking and choosing... and finally:
return false;

然后在锚点

<a href="size2" onclick="return updateImageWhenHashChanges(this.href);">test</a>

如果您可以使用数据绑定将图像的真实href放入锚点的href中,那么如果没有启用JavaScript,用户仍然可以最终看到图像题。然后你的功能代码只是获取图像的句柄并将源设置为入站参数。

答案 3 :(得分:0)

这样的事情:

<script type="text/javascript">
    var updateImageSize = function(imageType, imageID)
    {
        thisImage = document.getElementById(imageID);
        switch(imageType)
        {   
            case "thumb":
                // change image src to the thumbnail's path
                thisImage.src = "YourThumbNailPath";
            case "medium":
                // change image src to medium image path
                thisImage.src = "YourMediumImagePath";
            case "large":
                // you get the picture
                thisImage.src = "YourLargeImagePath";
            default:
                // whatever you want it to default to
                thisImage.src = "YourThumbNailPath";
        }
    }
</script>

然后执行:

<a href="javascript:void(0);" onclick="updateImageSize('thumb','tl00_ContentPlaceHolder1_Image1a');">Update Image</a>

希望有所帮助。