Mam stronę, która przekazuje pewne wartości za pomocą adresu URL do wprowadzania tagu na innej stronie. Problem, który napotkałem, polegał na tym, że gdyby nie przekazano żadnej wartości, wewnątrz znacznika wejściowego byłaby undefined jako wartość. Próbowałem więc napisać oświadczenie if:

  if (params.name === undefined) {
    input.value = '';
  } else {
    input.value = params.name;
  }
  if (params.surname === undefined) {
    input.value = '';
  } else {
    input.value = params.surname;
  }

Ale jak widać na tej podstawie, działa tylko na params.surname, kiedy przekazuję params.name jako wartość, znacznik wejściowy jest czysty. Jakieś pomysły, jak mogę to połączyć ze sobą, aby obie wartości pojawiały się wewnątrz tagu wejściowego?

0
Menor 1 kwiecień 2020, 05:00

4 odpowiedzi

Najlepsza odpowiedź

Użyj || do przełączania między name (pokazując, czy istnieje), surname (pokazując, czy istnieje) lub pustym ciągiem:

input.value = params.name || params.surname || '';

params.name zostanie wprowadzone, jeśli istnieje. W przeciwnym razie zostanie wprowadzone params.surname, jeśli istnieje. W przeciwnym razie zostanie ustawiony na pusty ciąg.

Jeśli właściwości mogą być pustym ciągiem, a nie tylko undefined, i chcesz, aby pusty ciąg został wyświetlony, jeśli istnieje, użyj zamiast tego operatora warunkowego:

input.value = params.name !== undefined
  ? params.name
  : params.surname !== undefined
    ? params.surname
    : '';
2
CertainPerformance 1 kwiecień 2020, 02:02

Inny sposób, fajna gra:

  const resolve = att => params[att]? params[att] : '';
  input.value = resolve('surname') || resolve('name');

Ponieważ surname ma wyższy priorytet niż name, więc w przypisaniu surname powinno zająć pierwsze miejsce.

Jeśli chcesz, aby name i surname istniały:

  const resolve = att => params[att]? params[att] : '';
  input.value = resolve('surname') + resolve('name');
1
Foxeye.Rinx 1 kwiecień 2020, 03:00

Innym bardziej czytelnym podejściem mogłoby być:

input.value = '';
if (params.name) input.value = params.name;
if (params.surname) input.value = params.surname;
1
Luis Donis 1 kwiecień 2020, 02:25
if(!(params.name || params.surname)){
  input.value = '';
} else if(params.name) {
  input.value = params.name;
} else {
  input.value = params.surname;
}
1
julianobrasil 1 kwiecień 2020, 02:10