Используйте консоль браузера для выбора выпадающих списков в таблице веб-страниц - PullRequest
0 голосов
/ 29 апреля 2020

Во-первых, это мой первый проект вне VBA, и я подумал, что это будет легко ... возможно, нет.

У нас есть клиентский веб-сайт, на котором мы заполняем форму. Это более 400 строк, просто выбрав «Да» из выпадающего меню. У меня нет никакой возможности изменить код HTML, кроме версии сеанса. Можно ли использовать консоль в браузере для идентификации элемента HTML и выбора определенной опции? Ниже приведен код таблиц, показывающий, что нужно изменить, и версию материала, который я пробовал ранее. Консоль браузера просто говорит «неопределено» тому, что я пытаюсь.

<select class="row" id="17.5.1" style="width:350px;font-family:Segoe UI;font-size:13px;" onchange="OnChangeElement(id)"><option></option><option selected="">Yes</option><option>No</option><option>NA</option></select>

То, что я пробовал в консоли, один из многих вариантов

function loop(tested){
var i;
for(i=1; i<20; i++){
//HTMLSelectElement("17.5.1");
//select.getOptionByValue("No");
//select.setSelectedAttribute(option, true);
$("17.5.1").getOptionByValue('No').setSelectedAttribute(option, true);
}
}

Я почти не знаю java ... Поэтому я прошу прощения, если я не знаю больше.

Спасибо !!

1 Ответ

1 голос
/ 29 апреля 2020

Сначала вы захотите выбрать все элементы <select> из документа.

const selects = document.querySelectorAll('select');

А затем l oop над каждым элементом выбора в al oop, чтобы манипулировать каждым <select> тег. В приведенном ниже примере единственная константа select является текущим элементом выбора, над которым мы зациклились.

for (const select of selects) {
  ...
}

Затем внутри l oop вы захотите увидеть options каждого select элемент, чтобы мы могли видеть, какие из них имеют значения, которые вы ищете. L oop снова над всеми опциями, сначала преобразовав HTMLOptionsCollection, который является объектом со всеми опциями, в массив и проверьте, равно ли свойство value значению, которое вы пытаетесь установить. Таким образом, вы случайно не установите неправильное значение для неправильного элемента <select>. Если оно имеет это значение, установите значение непосредственно в элементе выбора.

for (const select of selects) {
  const { options } = select;
  const hasValue = Array.from(options).some((option) => option.textContent === 'Yes');
  if (hasValue) {
    select.value = 'Yes';
  }
}

Или когда вам нужно выбрать только один элемент по идентификатору, используйте:

const select = document.getElementById('17.5.1');
const { options } = select;
const hasValue = Array.from(options).some((option) => option.textContent === 'Yes');
if (hasValue) {
  select.value = 'Yes';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...