Подтвердить что ты не робот

Шаблон getElementById()

У меня есть div, и там я получил некоторые дочерние элементы в уровнях undefined.

Теперь мне нужно изменить идентификатор каждого элемента в один div. Как реализовать?

Я думал, потому что у них есть восходящие идентификаторы, поэтому если родительский id = 'path_test_maindiv', то следующий downer будет "path_test_maindiv_child", и поэтому я подумал, что я разрешу это с помощью подстановочных знаков, например:

document.getElementById('path_test_*')

Возможно ли это? Или есть другие способы?

4b9b3361

Ответ 1

Не в родном JavaScript. У вас есть различные варианты:

1) Поместите класс и используйте getElementsByClassName, но он не работает в каждом браузере.

2) Сделайте свою собственную функцию. Что-то вроде:

function getElementsStartsWithId( id ) {
  var children = document.body.getElementsByTagName('*');
  var elements = [], child;
  for (var i = 0, length = children.length; i < length; i++) {
    child = children[i];
    if (child.id.substr(0, id.length) == id)
      elements.push(child);
  }
  return elements;
}

3) Используйте библиотеку или селектор CSS. Как jQuery;)

Ответ 2

В одном из комментариев вы говорите:

(...) IE в любом случае забанен на моей странице, потому что он не получает его с помощью CSS. Это инструмент администратора для разработчиков, так что всего несколько человек, и они все равно будут использовать FF

Я думаю, что вы должны следовать другому подходу с самого начала, но для новых целей в новых браузерах (хорошо, FF3.5) вы можете использовать document.querySelectorAll(), с помощью которого вы можете получить такие же результаты, как JQuery:

var elements = document.querySelectorAll('[id^=foo]');
// selects elements which IDs start with foo

Обновление: querySelectorAll() только не поддерживается в IE & lt; 8 и FF 3.0.

Ответ 3

jQuery позволяет находить элементы, где определенный атрибут начинается с определенного значения

В jQuery вы должны использовать

$('[id^="path_test_"]')

Ответ 4

Я не думаю, что в getelementById допустимы шаблоны. Вместо этого вы можете иметь все дочерние узлы вашего DIV, используя:

var childNodeArray = document.getElementById('DIVID').childNodes;

Это даст вам массив всех элементов внутри вашего DIV. Теперь, используя цикл for, вы можете пройти через все дочерние элементы, и одновременно вы можете проверить тип элемента или идентификатор или NAME, если они совпадают, а затем изменить его, как вы хотите.

Ответ 5

Вы не должны изменять идентификатор элемента для идентификатора другого существующего элемента. Это очень неправильно, поэтому вам лучше переосмыслить свою основную логику, прежде чем продолжать.

Что вы пытаетесь сделать точно?

В любом случае, чтобы получить все элементы с идентификатором, начинающимся с чего-либо, используйте jQuery, как было предложено ранее, если вы не можете также использовать чистый JavaScript, сообщите нам.

Ответ 6

Попробуйте это в 2019 году как подстановочный знак.

document.querySelectorAll("[id*=path_test_]")