使用javascript更改锚标记的href

嘿,我有一个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 %>);
}

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

最佳答案
您不能像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更改锚标记的href - 代码日志