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

[JQUERY] Code verkürzen, aber wie?

overhead

New member
Hallo Leute,

ich habe einen Code und wollte euch mal fragen wie ich den schlanker machen kann.
Code:
<script>
$(document).ready(function(){
	$("#showtooltiptext").hide();
        $("#tooltip").click(function(){
    	$("#showtooltiptext").toggle()
    });

});
function wertuebertrag(element) {
        var lala = element.getAttribute("data-codes");
        if (lala == "Überlastung"){
        	var lalavalue = "101";
        	$("#ctrl_485").val(lalavalue);
        } else if (lala == "Verschleiß / Überalterung"){
        	var lalavalue = "102";
        	$("#ctrl_485").val(lalavalue);
        } else if (lala == "Mechanische Beschädigung"){
        	var lalavalue = "103";
        	$("#ctrl_485").val(lalavalue);
        } 
        else {
        	$("#ctrl_485").val("");
        }
};
</script>
<div id="tooltip" class="tooltip">?
  <span id="showtooltiptext" class="tooltiptext">{{insert_content::60}}</span>
</div>

Und zwar gibt es eine Möglichkeit die if abfragen zusammen zu fassen, da es halt nicht nur bei 3 IF anweisungen bleibt, es könnten so etwa 40 werden.
 
Das einfachste wäre, die Nummern in das (oder ein ähnliches) data-Attribut zu stecken.

also letzen Endes:
Code:
function wertuebertrag(element) {
        $("#ctrl_485").val( element.dataset.codes );
}
 
Leider kann ich nicht die Nummer einfach in ein data-attribute stecken, da ich ja die data-codes abrufe und da steht dann der gleiche Text drin der auch angezeigt wird.
Des wegen muss ich erst den Name abfragen und wenn ein gewisser Name aufkommt wird in eine Variable die Zahl geschrieben udn der wird in ein Inputfeld gelegt.

Gibt es da noch eine andere Möglichkeit oder geht da nur die lange Variante wie ich es schon oben habe?
 
Oder mach ein Objekt, das die ganzen Namen als Keys hat und die Zahlen als Werte. Also in etwa so:
Code:
var wertuebertrag = function(){
	var translation = {
		"Überlastung": "101",
		"Verschleiß / Überalterung": "102",
		"Mechanische Beschädigung": "103"
	};
	return function wertuebertrag(element){
		$("#ctrl_485").val(
			translation[
				element.getAttribute("data-codes")
			] || ""
		);
	}
}();
 
das mit dem Objekt hat natürlich den Nachteil, dass du das auf jeder Seite aktuell halten musst. Wenn sich da serverseitig was ändert, kannst du schnell mal das dann notwendige JS-Update übersehen.
 
Zurück
Oben