2010-10-22 8 views
6

Hey ho una domanda per javascript. Devo assegnare un valore href a un tag di ancoraggio o asp: HyperLink. QUALCOSA. questo mi consentirà di collegare il testo in una finestra di dialogo a un href specificato da una funzione. Ecco il mio codice.Modificare l'href di un tag di ancoraggio con javascript

Ora sto ottenendo un fso dal database poiché quello è dove le informazioni sono memorizzate. Questo fso è diverso a seconda di ciò che la classe del reflector dell'entità invia a questo javascript. Ho una funzione che formatta le stringhe javascript simili a C# che ho trovato. Quindi ho un'altra funzione che ottiene il fso dalla classe del reflector dell'entità. Questo funziona. Ho provato la stringa visualizzandola in un avviso e questo funziona correttamente. Il problema che sto avendo è impostare l'href del tag anchor con javascript. Sto impazzendo! Per favore aiuto!

formato stringa:

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]); 
    } 
} 

mio tentativo di cambiare il 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 %>); 
} 

Il link per il download è cambiato e tutto. Proprio non riesco a essere in grado di impostare questo! Mi manca l'ordine di caricamento della pagina? Devo farlo dopo aver caricato tutta la pagina, poiché gli articoli potrebbero non essere ancora stati generati? Ho provato un paio di cose diverse. Potrei davvero usare una direzione.

risposta

5

Non è possibile fare riferimento a href direttamente in questo modo da un oggetto jQuery. Tutto quello che stai facendo è creare una nuova proprietà. Cambia per impostare l'attributo attraverso attr come questo ...

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

Per completezza, vorrei ricordare che si può arriva all'elemento DOM sottostante utilizzando la sintassi array, e quindi si potrebbe impostare il href con regolare Javascript ...

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

Inoltre, un altro errore probabile, penso che hai bisogno di citazioni qui ...

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

sto facendo questo con una funzione javascript regolare. Questo non ha quella .attr funzione? non funziona con quella sintassi. – Tom

+0

L'ho capito. È .attr ('href', downloadHref); – Tom

0

Questa riga non è corretta, per impostare HREF è necessario accedere alla funzione attr di jQuery.

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

Il javascript deve essere eseguito dopo il caricamento della pagina è stato completato.

Il modo jQuery di farlo:

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


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

}