2009-06-11 5 views
18

Ich habe eine Seite mit einem Anker-Tag. In meinem JavaScript setze ich das Attribut HREF des Anchor-Tags dynamisch basierend auf einigen If-Else-Bedingungen. Jetzt möchte ich das click -Ereignis des Anchor-Tags programmgesteuert aufrufen. Ich habe den folgenden Code verwendet, war aber nicht erfolgreich.JavaScript: Aufruf-Click-Ereignis eines Anchor-Tags von Javascript

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650"; 

document.getElementById("proxyAnchor").href=proxyImgSrc; 
document.getElementById("proxyAnchor").onclick; 

Kann mir jemand sagen, wie ich weitermachen soll? Ich habe eine jQuery Leuchtkasten-Implementierung (Thickbox) auf diesem Link.

Bitte beraten. Danke im Voraus.

+0

Kann ich den Pfad angeben, wo die Datei heruntergeladen werden soll? , weil damit nur in den Ordner DOWNLOADS heruntergeladen wird. Ich möchte in den Speicherort der HTML-Datei speichern. –

Antwort

63

Wenn Sie jQuery installiert haben, warum dann nicht nur dies tun:

$('#proxyAnchor')[0].click(); 

Hinweis, die wir verwenden [0] das erste Element zu spezifizieren. Der jQuery-Selektor gibt eine jQuery-Instanz zurück, und der Aufruf von click(), das nur aufruft, ruft den javascript-Handler auf, nicht die href. Der Aufruf click() auf dem tatsächlichen Element (zurückgegeben durch [0]) wird der Link in einem href usw.

Sehen Sie hier ein Beispiel folgen, den Unterschied zu verdeutlichen: http://jsfiddle.net/8hyU9/

Wie, warum Ihre Original-Code ist funktioniert nicht - es ist wahrscheinlich, weil Sie onclick anrufen, und nicht onclick(). Ohne die Klammer gibt JavaScript das zurück, was der onclick-Eigenschaft zugewiesen ist, und versuche nicht, es auszuführen.

Versuchen Sie das folgende einfache Beispiel, um zu sehen, was ich meine:

var f = function() { return "Hello"; };  
alert(f); 
alert(f()); 

Die erste wird den eigentlichen Text der Funktion angezeigt werden, während der zweite das Wort „Hallo“ wie erwartet angezeigt.

+1

Warum der Downvote? – samjudson

+1

Danke Samjudson.IT arbeitete – Shyju

+2

Für den Anwendungsfall von "folgen Sie dem im Anker definierten href" [diese Antwort schlägt fehl] (http: // jsfiddle.net/SNdHW/show /) –

1

Ich glaube, dass Sie das Ereignis click aufrufen möchten. Nicht das "onClick". Stellen Sie außerdem sicher, dass Sie beim Aufruf einer Methode die Klammer() einfügen. Verwechseln Sie keine Methoden (die mit (und) enden) mit Attributen und Eigenschaften, die nicht mit (und) enden.

// Using jQuery - Which you tagged... 
$("#proxyAnchor").attr("href", proxyImgSrc).click(); 
+0

Yes.Click event – Shyju

11

sollten Sie rufen Veranstaltung wie diese klicken:

document.getElementById("proxyAnchor").click(); 
// $('#proxyAnchor').click(); 

aber in Ihrem Fall sollten Sie das Fenster der Lage auf eine Umleitungsseite gesetzt, wenn Sie das wollen.

+0

Kann ich den Pfad angeben, wo die Datei heruntergeladen werden soll? , weil damit nur in den Ordner DOWNLOADS heruntergeladen wird. Ich möchte in den Speicherort der HTML-Datei speichern. –

1

ich das glauben, was Sie nach:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650"; 
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;