Букмарклет для замены входных значений полей ввода случайных имен - PullRequest
0 голосов
/ 24 мая 2018

Я хотел бы создать букмарклет, который заменит все значения каждого поля ввода на веб-странице.Их много, но их можно разделить на две категории по их имени .

Пример:

<input class="Class1" name="ABC_randomnumbers" value="randomnumber" type="text">
<input class="Class1" name="DEF_randomnumbers" value="randomnumber" type="text">

Поля ввода с именами, начинающимися с ABC, будутПолучив значение X, поля ввода с именами, начинающимися с DEF, получат значение Y. Я пытался

javascript:document.body.innerHTML=document.body.innerHTML.replace(/input class="Class1" name="ABC_(\d+)" value="\d+"/g,'input class="Class1" name="ABC_$1" value="X"'); document.body.innerHTML=document.body.innerHTML.replace(/input class="Class1 name="DEF_(\d+)" value="\d+"/g,'input class="Class1" name="DEF_$1" value="Y"');

заменить все вхождения этих строк в HTML, но он портит всю страницу, напримерудаляет содержимое тега.Я прочитал кое-что о getElementsByName , но у них нет одинакового имени, и я не могу заставить работать с регулярным выражением getElementsByName .

1 Ответ

0 голосов
/ 24 мая 2018

Я бы воздержался от редактирования базового HTML таким способом.Лучшим вариантом является редактирование страницы с использованием кода Javascript.Ниже приведен пример:

var allInputs = document.getElementsByTagName("input");

for (var i = 0; i < allInputs.length; i++) {
    if(allInputs[i].name.startsWith("ABC_")) {
        //Do Logic here
    }

    //Other cases here
}

Сокращенная версия приведена ниже:

Array.from(document.getElementsByTagName("input")).forEach(function(input) {
    if(input.name.startsWith("ABC_")) {
        //Do Logic here
    }

    //Other cases here
});
...