Javascript: сравнение ОДИНОЧНОЙ ЦЕННОСТИ ОТ МНОЖЕСТВЕННЫХ ЦЕННОСТЕЙ с OR Операндами

Возможный дубликат:
Проверить равенство переменных на список значений
Оператор Javascript if с несколькими допустимыми условиями

Я должен нажать те же 21 из 253 элементов (li) в выпадающем списке (ul).

Прокрутка. Мне нужно сделать это для одного и того же списка на более чем 500 страницах. Я полагал, что Javascript может вставлять каждую строку ul, прокручивать и нажимать каждый li, который является одним из 21. Кажется, я не могу сделать что-то вроде

 if(item[i] === ('aasdf'|'basdf'|'cwefw'|'asdfd'|'trehe'|'ferth'|'erthg'|'erthh'|'ierth'|'jeth'|'kerth'|'lerth'|'merth'|'psdfg'|'gregq'|'rsrgs'|'sress'|'srget'|'sergu'|'sdfgsv'))

Есть ли синтаксически более чистый способ написания этого уродливого оператора if ниже?

var item = document.getElementById('myDropdownList').getElementsByTagName('li');

for (i=0;i<item.length;i++){

    if(item[i].innerText === 'Argentina' | item[i].innerText === 'Australia' | item[i].innerText === 'Brazil' | item[i].innerText === 'Canada' | item[i].innerText === 'China' | item[i].innerText === 'Colombia' | item[i].innerText === 'France' | item[i].innerText === 'Germany' | item[i].innerText === 'Indonesia' | item[i].innerText === 'India' | item[i].innerText === 'Italy' | item[i].innerText === 'Japan' | item[i].innerText === 'Malaysia' | item[i].innerText === 'Mexico' | item[i].innerText === 'Philippines' | item[i].innerText === 'Russia' | item[i].innerText === 'South Africa' | item[i].innerText === 'Sweden' | item[i].innerText === 'Switzerland' | item[i].innerText === 'United Kingdom' | item[i].innerText === 'USA'){

    item[i].click();

    }

}

Ответ 1

Вы можете использовать переменную и множественное сравнение, но это еще долго:

var text = item[i].innerText;
if (text === 'Argentina' | text === 'Australia' | text === 'Brazil' | text === 'Canada' | text === 'China' | text === 'Colombia' | text === 'France' | text === 'Germany' | text === 'Indonesia' | text === 'India' | text === 'Italy' | text === 'Japan' | text === 'Malaysia' | text === 'Mexico' | text === 'Philippines' | text === 'Russia' | text === 'South Africa' | text === 'Sweden' | text === 'Switzerland' | text === 'United Kingdom' | text === 'USA')

Или вы можете просто использовать массив и проверить, содержится ли в нем строка.

var matches = ['Argentina','Australia','Brazil','Canada','China','Colombia','France','Germany','Indonesia','India','Italy','Japan','Malaysia','Mexico','Philippines','Russia','South Africa','Sweden','Switzerland','United Kingdom','USA'];
if (~ matches.indexOf(item[i].innerText) …

Тем не менее, для сложного сравнения != -1 и отсутствия встроенного indexOf в старых IE, люди склонны использовать регулярные выражения:

var regex = /Argentina|Australia|Brazil|Canada|China|Colombia|France|Germany|Indonesia|India|Italy|Japan|Malaysia|Mexico|Philippines|Russia|South Africa|Sweden|Switzerland|United Kingdom|USA/
if (regex.test(item[i].innerText)) …

Ответ 2

var options = ['Argentina', 'Australia', 'Brazil', 'Canada', ...];
if (options.indexOf(item[i].innerText) !== -1){
  // item[i] was found in options
}

Что-то вроде этого? используйте Array.indexOf (Если я неправильно прочитал вопрос? В этом случае отправьте комментарий, и я сделаю все возможное, работай мой ответ)