• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

via click event text auf button ändern

blacknova

New member
Hallo zusammen, ich bin neu hier und habe auch gleich ein kleines Problem mitgebracht ;)
Und zwar habe ich eine Funktion, in der ich u.a. einen Text vom Button via Click Event ändern möchte. Ich habe schon einiges probiert, aber komme irgendwie nicht zu einer Lösung. Im Endeffekt ist das ja trivial, wenn ich ein leeres Dokument nehme und einen Button erstellen, etc dann geht es. Nun habe ich aber eine Funktion vorgegeben, in der ich dieses Event auslösen soll und da gehts einfach nicht.
Es gibt den Button "Lock" der sich quasi eine GPS Position merken soll. Dieser Code ist gegeben:

Code:
$(".tmaction").click(function(e){ 
	
		console.log(e.target);
	

		if (e.target.id == "lock") {
			tm.state.msg = { type : "TL", "itu": tm.state.itu, "tour" : tm.data.tour.tournr };
			};
			
		
		if (e.target.tmfunc == "unlock") {
			tm.state.msg = { type : "TU", "itu": tm.state.itu, "tour" : tm.data.tour.tournr };
			};
	
		postupdate();


	});

Und das ist nun mein Stand, erst mal nur der Versuch den Text zu ändern. Firebug sagt das hier: "TypeError: document.getElementById(...) is null
file:///C:.../appdemo/app.html". Die ID vom Button ist ja aber lock, also meines Erachtens nach nicht null.


Code:
$(".tmaction").click(function(e){ 
	
		console.log(e.target);
			
		if (e.target.id == "lock" ) {
			document.getElementById("lock").innerText = "Unlock";
			}
		else 
		{
			document.getElementById("lock").innerText = "Lock";
		}

Vielleicht kann mir ja einer von euch helfen :)
 
Zuletzt bearbeitet:
Hallo kkapsner, es läuft jetzt mit:

Code:
<li data-theme="b"><a id="vlock" class="tmaction" href="#" >Lock</a></li>


if (e.target.id == "vlock" ) {
			document.getElementById("vlock").text = "Unlock";
			}
		else 
		{
			document.getElementById("vlock").text = "Lock";
		}

Die erste triviale Hürde ist geschafft :D
Jetzt muss ich es nur noch hinbekommen, dass sich die Beschriftung bei jedem Klick abwechselnd ändert.
 
Zuletzt bearbeitet:
Zwei Sachen, blacknova!
Wofür genau dient href="#"?
Und den Ausdruck unten kann man besser lesbar auch so schreiben:
document.getElementById("vlock").text = (e.target.id == "vlock" ? "Unlock" : "Lock");
 
href=# ist ein Platzhalter

Danke, dass ist wirklich übersichtlicher :)
 
Zuletzt bearbeitet von einem Moderator:

Hab ich vor Ewigkeiten auch gerne selbst gemacht. Durch den # wird kein Event ausgelöst welches die URL ändert.
Ansonsten müsste er in den Code noch erweitern, dass dem Link nicht nachgegangen wird ( e.preventDefault();)
Einfacher wäre es statt dem <a> Tag ein <span> zu verwenden.

Der Code sieht für mich etwas seltsam aus. Liegt aber wohl daran, dass hier noch so viele anderen Dinge verbaut sind.
Ansonsten wäre das ändern eines Texts natürlich nur ein Ein/Zweizeiler.
 
Zurück
Oben