Gå til innhold

javascript if variable (not) in (...)


Anbefalte innlegg

Skrevet

finnes det noen måte å bruke en set operator i en if javascript?

 

jeg prøvde med

 

if (!name in('id','addby','addtime'))
{...}

 

men fikk feilmeldingen 'Invalid in operand 'addtime' så det var ikke måte å finne ut at en variabel ikke var en av flere strenger... er det noen annen måte å unngå en drøss med and'er eller or'er i if'en min?

 

M.

Videoannonse
Annonse
  • 1 måned senere...
Skrevet

Hmm, jeg fikk endelig testet det, men det virker ikke... Dvs, den slår aldri til,

 

hiddenFields= new Array('id','addby','addtime');
if ( field in hiddenFields){
   alert('hidden: '+field);
}else{
   ...
}

kommer aldri til alert, derimot

if ( field == 'id' || field=='addtime' || field == 'addby'){ 
  alert('hidden: '+field);
}else{
...
}

gjør som jeg forventer. Er det noe jeg har misforstått?

 

M:

Skrevet

Hm, snedig. Ser ut til at in-operatøren kun sjekker hvor mange indexer det er i arrayet.

 

Prøv dette i browseren din si adresselinje

javascript:alert(0 in new Array('yo', 'hey'))

javascript:alert(1 in new Array('yo', 'hey'))

javascript:alert(2 in new Array('yo', 'hey'))

javascript:alert(3 in new Array('yo', 'hey'))

 

De siste gir false, fordi det ikke finnes noe element nummer 2 eller 3 i arrayet (kun element 0 ('yo') og 1 ('hey')).

 

 

én måte å løse dette på, kan være å bruke .prototype attributet, men det får jeg komme tilbake til seinere..

Skrevet

Har du noe sted en beskrivelse av hvordan js sin in-operator virker? Å google etter 'in' er ikke tingen.. :)

 

Hmm. får vrenge systemet og sette opp en assosiative array med det jeg er på jakt etter som keys.

 

M.

Skrevet

Nå er jeg tilbake på mi ega maskin, så nå kan jeg komme med et eksempel, se her:

<script type="text/javascript">
Array.prototype.has_key = function(searchKey)
{
   len = this.length
   for(i=0; i < len; i++){
       if(this[i] == searchKey)
           return true 
   }
   return false
}

hiddenFields= new Array('id','addby','addtime')

search = 'addtime'

if ( hiddenFields.has_key(search)){
  alert('hidden: '+search);
}else{
  alert('nope')
}
</script>

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...