Look mA, żaden operator trójargumentowy!
Poniższe działa z powodu wyrażeń logicznych zwarć JavaScript.
Jeśli something == string1
następnie ocenić string2
- od string2
jest truthy wartość i następny wyraz polega operacja OR nie ma potrzeby, aby kontynuować. Zatrzymaj i zwróć string2
.
Jeśli something !== string1
to pominie następny operand, ponieważ jeśli jest fałszywe, nie ma sensu oceniać następnego argumentu (z AND). To "przeskoczy" do operacji OR i zwróci string1
.
function toggleString(something, string1, string2) {
return something == string1 && string2 || string1;
}
something.val(toggleString(something.val(), "string1", "string2"));
Jeśli chcesz zadanie zrobienia:
function toggleValue(something, string1, string2) {
something.val(something.val() == string1 && string2 || string1);
}
toggleValue(something, "string1", "string2"); // something is a jQuery collection
w końcu jednak chciałbym skończyć się za pomocą operatora potrójny ponieważ rozwiązanie to może być niejasne dla innych programistów. Jeśli pochodzisz z Javy lub innych języków, możesz oczekiwać, że funkcja zwróci wartość logiczną z powodu wszystkich operatorów boolowskich.
Dokładnie tego, czego szukałem - dzięki! – Bojangles
Ale to spowoduje ustawienie 'string1', nawet jeśli wartość to' string3', nie tylko dla 'string2' –
@ dev-null-dweller to nie problem - przełączam tekst w przycisku pomiędzy" Reply "a" "Anuluj" :) – Bojangles