devo creare il mio URL in una funzione javascript, quindi restituire la stringa a href
-
18-09-2019 - |
Domanda
Devo chiamare una funzione Javascript da un file a
elemento..qualcosa come questo:
href='javascript:myjavascriptfunction();'
.Ho bisogno della funzione Javascript per ottenere i valori da un paio di controlli datepicker, creare e urlencode una querystring e restituirla in modo che si apra in una nuova finestra.Finora penso di avere tutto, ma ho difficoltà a creare l'URL e restituirlo correttamente.Questo è il mio a
elemento finora.
<a href='javascript:myjavascriptfunction();' id="myhyperlink" target="_blank">
Nella mia funzione Javascript sto costruendo la stringa e restituendola in questo modo:
return queryString;
Risultato:fai clic sul collegamento e si apre una nuova finestra con l'URL della mia finestra principale con il nome della chiamata di funzione aggiunto?
Soluzione
È necessario utilizzare window.open () per forzare una nuova finestra, credo che l'unica ragione è comportarsi come lo è per voi è che stai dicendo è che per aprire javascript in una nuova finestra, e sta facendo esattamente quello che stai dicendo che.
Dopo aver ottenuto il vostro URL assemblato, fare un window.open(urlvar);
e si dovrebbe ottenere quello che stai cercando.
Inoltre, controllare questo post per come fare un <a href="">
ordinata con un'onclick che degrada con grazia. Come minimo, fare href="javascript:void(0)"
e quindi onclick="myjavascriptfunction(); return false;"
.
Altri suggerimenti
Il valore restituito di una funzione JavaScript non è disponibile per il browser come HREF per il collegamento.Per farlo funzionare come intendi, dovresti ottenere l'elemento A in JavaScript e interferire con il suo HREF.Ciò è possibile:
var link = document.getElementById ("myhyperlink");
link.href = "http://example.com/" + jiggerypokery ();
Dove jiggerypokery ()
è l'URL che desideri creare.
Tuttavia quanto sopra è stupido, poiché sovrascrive il collegamento a se stesso e l'utente probabilmente dovrebbe comunque fare clic due volte su di esso.Come dice Pablo, dovresti usarlo window.open
qui, così dentro myjavascriptfunction ()
var gotopage = "http://example.com/" + jiggerypokery ();
window.open (gotopage);