簡體   English   中英

使用javascript更改錨標記的href

[英]Change the href of an anchor tag with javascript

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

這行不正確,設置你需要訪問jQuery的attr函數的HREF

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

您的javascript需要在頁面加載完成后運行。

jQuery的做法:

$(document).ready(function() { init() })


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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM