OnKlick für alle Objekte gleicher Art

Smoothi

Bekanntes Mitglied
Ich programmier derzeit mit JavaEE und verwende commandButton und commandLink.

Nun möchte ich eine Funktion verwenden für alle Objekte folgender Art:
input type="image" (commandButton)
input type="Button" (commandButton)
a href="#" (commandLink)

Da meine Anwendung aber haufenweise solcher Objekte hat, möchte ich es nicht überall ranschreiben.

Kann ich für genau diese Objekte ein onClick setzen, sodass meine Funktion immer aufgerufen wird?
 

faetzminator

Gesperrter Benutzer
Mit jquery kann man sowas gemütlich in ein paar Zeilen machen. Dort kannst du z.B. nach [c]$('input[type="image"]')[/c] selektieren, und dann mit [c]each()[/c] über alle Objekte laufen und onclick neu setzen.
 

Smoothi

Bekanntes Mitglied
@faetzminator
Ich hab nicht mehr allzuviel Zeit, dass ich mich mit JQuery beschäftigen könnte. Ich hab auch nur wenige kleine JS-Funktionen. ;)

@HimBromBeere
Habe es so versucht:
Code:
<script type="text/javascript">  
for (var i = 0; current = document.getElementsByTagName('input')[i]; i++) {     
    current.addEventListener('click', showElements('inactive', 'loading'))
}
</script>

Problem 1:
Diesen Teil habe ich nun ganz am Ende meiner Seite gesetzt. Würde es gern in der externen js-Datei haben. Wenn ich die Größe der Liste ausgebe, dann kommt dabei 0. Ich denke, dass die DOM-Struktur noch nicht geladen ist, wärend er die Sache ausführt. Kann ich da as machen? Also die HTML-Seite zunächst laden lassen, bevor die Sache aktiv wird?

Problem 2:
Ich habe nun "click" übergeben. Trotzdem werden die beiden Elemente in der übergebenen Funktion sofort sichtbar, nachdem die Seite geladen wurde.... Ich möchte ja onclick-Events.
 

Smoothi

Bekanntes Mitglied
Ja, dann brauch ich ja einfach nur showElements('inactive', 'loading')) aufzurufen. Jedoch habe ich so viele Links und Buttons, dass ich das gern nicht überall dranschreiben möchte. Deswegen such ich ja eine Möglichkeit, das für alle Links gleichzeitig zu lösen ;)
 

Evil-Devil

Top Contributor
Um beim jQuery Beispiel zu bleiben:

Code:
function meineTolleFunktion() {
	alert("Hallo Welt");
}

$(document).ready(function() {
	$('.command').bind('click', meineTolleFunktion);
}

Die Funktion meineTolleFunktion liegt zb. im externen Skript.
Am Ende der Seite muss lediglich das Document Ready eingebunden werden.
Alternativ würde das iirc sogar im externen Script funktionieren.

Und was wird hier gemacht? Hier wird jedes DOM Element das eine "command" Styleclass gesetzt bekommen hat der Funktion im onClick verknüpft.

Anstatt .command hätte man auch input schreiben können. Dann wären alle input Felder betroffen gewesen.
Weiterführende Beispiele für zb. Parameter Übergabe bitte der jQuery Doku entnehmen.
 

Smoothi

Bekanntes Mitglied
Ok ich hab das nun so übernommen.

Jedoch meckert er von wegen "Objekt nicht gefunden" in Zeile 70 Zeichen 1.

Code:
$(document).ready(
    function() {
        $('input').bind('click', showElements('inactive', 'loading'));
    }
)

Zeile 70 wär
Code:
$(document).ready(

Also wird dieses $ nicht gefunden. Muss ich jQuery irgendwie separat bereitstellen? In meiner Template-Datei ist es jedenfalls drin.
 
Zuletzt bearbeitet:

Smoothi

Bekanntes Mitglied
Wie gesagt, in meiner Template-Datei (JSF) ist es drin. Habs gedownloaded und dem Projekt beigelegt...

Is schon klar, dass er die Funktionen nicht aus der Luft nimmt ;D

Code:
<h:outputScript library="javascript" name="jquery-1.7.1.min.js" />

Die Datei befindet sich in resources/javascript, wie die andere JavaScript-Datei auch. Also beim Pfad sollte es keine Probleme geben.


Nee nee ;) ich meinte, muss ich in meiner aufrufenden JavaScript-Datei nochetwas machen?
 
Zuletzt bearbeitet:

Smoothi

Bekanntes Mitglied
ok, ich habe die Funktion spaßenshalber an das Ende der Templatedatei gesetzt und siehe da...keine Fehler mehr, dafür funktioniert die jQuery-Funktion trotzdem nicht.

Selbst wenn ich Klassen übergeb, die es in meiner Anwendung nicht gibt (in Beispiel ".test123")
Code:
<script type="text/javascript">
$(document).ready(
    function() {
    $('.test123').bind('click', showElements('inactive', 'loading'));
    }
)
</script>

Die Funktion wird immer direkt gestartet. :/

Unverträglichkeit zwischen JSF und jQuery? Wobei genau das gleiche Problem schon bei der Nicht-jQuery-Lösung aufgetaucht ist
 
Zuletzt bearbeitet:

Smoothi

Bekanntes Mitglied
"loading" ist nur eine Lade-Box und "inactive" ist eine halbtransparente Box über die gesamte Seite.

Die werden nur auf sichtbar gesetzt, da es manchmal etwas länger dauern kann mit dem Seitenaufbau. Die Dinger sind so lange sichtbar, bis die andere Seite geladen ist, dann wird ja sowieso neu "gezeichnet" und die Boxen sind standardmäßig wieder unsichtbar. Hatte, wenn ichs direkt ran schreib, jedenfalls super funktioniert
 
Zuletzt bearbeitet:

Evil-Devil

Top Contributor
Dh. deine komplette Seite ist an sich erst halbtransparent überlegt und dann zeigt sie noch einen Ladeschirm an?
Und dieser soll verschwinden wenn die Seite fertig ist?
 

Smoothi

Bekanntes Mitglied
Es ist ja so, dass die alte Seite so lange angezeigt wird, bis die neue geladen ist.

Sobald ich einen Button klicke, der mich auf eine andere Seite weiterleitet, wird einfach nur meine Ladebox mit dem halbtransparenten Hintergrund angezeigt. ;)

Wenn die neue Seite geladen ist, ist diese Sichtbarkeit ja wieder weg, da wieder die Werte aus der CSS-Datei entnommen werden ;)

Habs hinbekommen:
Code:
function loading() {
    showElements('inactive', 'loading')
}            
            
$(document).ready(
    function() {
    $('input').bind('click', loading);
    }
)

Ich glaub das meintest du, dass die bind() so nicht verwendet werden kann. ;)

Leider muss ich die Zeilen an das Ende meiner Template-Datei schreiben, da sonst die Objekte nicht gefunden werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P mehrere Funktionen in einer aufrufen und onklick zuweisen Angular, React, JQuery - Fragen zu JavaScript 14
B Javascript Tutorial für DOM Manipulationen? Angular, React, JQuery - Fragen zu JavaScript 0
R Die Typisierung Service[] ergibt für mich keinen Sinn Angular, React, JQuery - Fragen zu JavaScript 5
Q Typsichers Binding für matSortDirection Angular, React, JQuery - Fragen zu JavaScript 10
N Cookies setzen für Verzeichnis Angular, React, JQuery - Fragen zu JavaScript 4
N Überprüfungsbutton für ein Eingabeformular erstellen Angular, React, JQuery - Fragen zu JavaScript 16
B PullDown erstellen für webseite? Angular, React, JQuery - Fragen zu JavaScript 12
X NegaMax für TicTacToe in JS gewinnt nicht... Angular, React, JQuery - Fragen zu JavaScript 11
P Bildschirmtastatur für Spiele Angular, React, JQuery - Fragen zu JavaScript 6
M Mit Ajax Daten als Eingabe für Dyngraph erzeugen Angular, React, JQuery - Fragen zu JavaScript 6
L [JavaScript] Mehrere Variablen für Live-Suche in MySql-DB Angular, React, JQuery - Fragen zu JavaScript 0
A Hilfe für guten Zweck Angular, React, JQuery - Fragen zu JavaScript 6
J Lese Webseite aus für LinkPreview Angular, React, JQuery - Fragen zu JavaScript 1
A Script für Benachrichtigung Angular, React, JQuery - Fragen zu JavaScript 9
S Suche Lösung für einen Slider mit Textverlinkung Angular, React, JQuery - Fragen zu JavaScript 2
L Suche D3 Tutorial (speziell für Sunburst-Darstellung...) Angular, React, JQuery - Fragen zu JavaScript 2
H Javascript für wordpress "open new window" Angular, React, JQuery - Fragen zu JavaScript 1
N JavaScript für Touch Devices bei DropDown Menü Angular, React, JQuery - Fragen zu JavaScript 4
F Schnellen Browser für HTML mit JS drin. Angular, React, JQuery - Fragen zu JavaScript 6
Fab1 [SUCHE] JavaScript Buch für Umsteiger Angular, React, JQuery - Fragen zu JavaScript 4
K Webapp für Iphone Safari Browser und Links Angular, React, JQuery - Fragen zu JavaScript 6
H HTML5 basierter Client für Webkartendienste auf Smartphones Angular, React, JQuery - Fragen zu JavaScript 2
F Dropdownmenü für JavaScript Angular, React, JQuery - Fragen zu JavaScript 5
J Dynamic Markers für POIs aus Postgresdatenbank Angular, React, JQuery - Fragen zu JavaScript 8
H Gadgeterweitung für Kostal Piko Angular, React, JQuery - Fragen zu JavaScript 5
R Anleitung für einen Konfetti Regen Angular, React, JQuery - Fragen zu JavaScript 9
D Kontrollkästchen/Checkbox automatisch aktivieren ! (für Profis) JavaScript Angular, React, JQuery - Fragen zu JavaScript 4
S Javascript für Teamvergabe gesucht. Angular, React, JQuery - Fragen zu JavaScript 4
S Skript für Greasemonkey Angular, React, JQuery - Fragen zu JavaScript 3
C Play und Stop-Error für Musik Angular, React, JQuery - Fragen zu JavaScript 4
A Programmierer für "kleines" Javaprogramm gesucht Angular, React, JQuery - Fragen zu JavaScript 2
G finde Einstellmöglichkeiten für Menue nicht. Angular, React, JQuery - Fragen zu JavaScript 2
M Hilfe gesucht für ein Projekt Angular, React, JQuery - Fragen zu JavaScript 1
K Suche Scrollscript für Objekte Angular, React, JQuery - Fragen zu JavaScript 3
E Fragen zu java Navigation für Internetseite Angular, React, JQuery - Fragen zu JavaScript 2
T Höhe und Breite übergeben für IE! Angular, React, JQuery - Fragen zu JavaScript 2
L Dauerlaufzeile mit Fotos für html Angular, React, JQuery - Fragen zu JavaScript 2
B Einen Timer für Windows Angular, React, JQuery - Fragen zu JavaScript 4
M Script für Namen? Angular, React, JQuery - Fragen zu JavaScript 5
D Inputfeld für Preiseingabe Angular, React, JQuery - Fragen zu JavaScript 6
K Fragen für Praktikum-aber keine Ahnung! Angular, React, JQuery - Fragen zu JavaScript 4
B Zähler für Eingabefeld Angular, React, JQuery - Fragen zu JavaScript 5
D 5 € Musicload Gutschein für Antwort: Formular mit JavaScript Angular, React, JQuery - Fragen zu JavaScript 10
N Java Refresh-Script für Java-Newb Angular, React, JQuery - Fragen zu JavaScript 4
K Bild soll nach 5 Sekunden für 5 Sekunden erscheinen Angular, React, JQuery - Fragen zu JavaScript 5
S Skript für Bannerwechsel Angular, React, JQuery - Fragen zu JavaScript 3
N Java script für detailierten Text anzeigen gesucht Angular, React, JQuery - Fragen zu JavaScript 4
A Timeoutfunktion für JavaScript Angular, React, JQuery - Fragen zu JavaScript 2
R Angular: Tabelle erhält nicht alle Zeilen Angular, React, JQuery - Fragen zu JavaScript 2
D MediaElements.js auf alle Elemente darstellen + nachladenden infinite Scroll Angular, React, JQuery - Fragen zu JavaScript 0
R zyklisch ein Applet Rückgabewert auslesen, so alle 1-2 sek? Angular, React, JQuery - Fragen zu JavaScript 4

Ähnliche Java Themen


Oben