【问题标题】:Change the href of an anchor tag with javascript使用 javascript 更改锚标记的 href
【发布时间】:2011-04-29 05:58:57
【问题描述】:

嘿,我有一个关于 javascript 的问题。我需要为锚标记或 asp:HyperLink 分配一个 href 值。某物。这将允许我将弹出对话框中的文本链接到函数指定的 href。这是我的代码。

<'custom:JQueryDialog I made' runat=server ID="dialogPopUp" AutoOpen="false"
   CloseOnEscape="true" Modal="true" Title="Download" width="300px">
    //I will spare you all of the div tags for formatting
    <a runat="server" id="downloadLink" target="_blank" class="'css with an icon'"
       href=""></a>
</'custom:JQueryDialog I made'>

现在我必须从数据库中获取一个 fso,因为这是存储信息的地方。这个 fso 是不同的,具体取决于实体反射器类发送到这个 javascript 的内容。我有一个函数可以格式化类似于我发现的 C# 的 javascript 字符串。然后我有另一个函数从实体反射器类中获取 fso。这行得通。我通过在警报中显示它来测试字符串,这工作正常。我遇到的问题是用javascript设置锚标记的href。我要疯了!请帮忙!

字符串格式:

String.format = function() {
    var s = arguments[0];
    for (var i = 0; i < arguments.length - 1; i++) {
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i + 1]);
     }
}

我尝试更改 href:

function changeHref(fso) {
    var downloadHref = String.format("Download.ashx?fso={0}", fso);
    $('#<%= this.downloadLink.ClientID %>').href = downloadHref;
    showDialog(<%= this.'custom dialog i made'.ClientID %>);
}

下载链接已更改,一切都已更改。我似乎无法设置这个!我错过了页面加载的顺序吗?由于可能尚未生成项目,我是否需要在整个页面加载后执行此操作?我尝试了几件不同的事情。我真的可以使用一个方向。

【问题讨论】:

    标签: javascript anchor href


    【解决方案1】:

    您的 javascript 需要在页面加载完成后运行。

    jQuery 的做法:

    $(document).ready(function() { init() })
    
    
    function init() {
      $('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref);
      //Josh's code above
    
    }
    

    【讨论】:

      【解决方案2】:

      此行不正确,设置HREF需要访问jQuery的attr函数。

      $('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref);
      

      【讨论】:

        【解决方案3】:

        您不能像从 jQuery 对象那样直接引用 href。您所做的只是创建一个新属性。改成这样通过attr设置属性...

        $('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref);
        

        为了完整起见,我应该提到您可以通过使用数组语法获取底层 DOM 元素,然后您可以使用常规 Javascript 设置 href...

        var domElem = $('#<%= this.downloadLink.ClientID %>')[0]; // DOM element is at 0
        domElem.href = downloadHref;
        

        另外,另一个可能的错误,我认为你需要在这里引用...

        showDialog("<%= this.'custom dialog i made'.ClientID %>");
        

        【讨论】:

        • 我正在使用常规的 javascript 函数执行此操作。那没有那个 .attr 功能?不适用于该语法。
        • 我想通了。就是 .attr('href', downloadHref);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 2021-05-16
        • 1970-01-01
        • 2013-02-27
        相关资源
        最近更新 更多