Не удается получить доступ к идентификатору с помощью getelementbyid

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть строковая переменная, которая содержит значение html.

 sAttachment = "<HTML><BODY><TABLE><TR id='tr1'><td>...</td></TR><TR id='tr2'><td>..</td></TR></TABLE></BODY></HTML>"
  

Что я хочу сделать, так это удалить tr1 и все элементы под ним, но я не могу получить к нему доступ с помощью getelementbyid.

 var htmldoc = document.createElement('div');
htmldoc.innerHTML = sAttachment;
  

htmldoc.getElementById('tr1') —> объект не поддерживает это свойство или метод.

Почему я не могу этого сделать? или есть какой-либо другой способ, чтобы я мог удалить tr1 без создания другого элемента?

Использование javascript. заранее спасибо

Комментарии:

1. Вы добавляете a <html> внутри a <div> ..?!?!?

Ответ №1:

Поскольку у объекта Element нет метода с именем getElementById(), он присутствует в объекте document .

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

 htmldoc.querySelector('#tr1')
  

Демонстрация: скрипка

Комментарии:

1. @AedzMigraso Я думаю, что это поддерживается в IE8 — см. developer.mozilla.org/en-US/docs/Web/API /…

2. другой вариант — использовать jQuery like $(htmldoc).find('#tr1') — он вернет объект jQuery, а не ссылку на dom. чтобы получить ссылку на элемент dom $(htmldoc).find('#tr1')[0]

3. Я не думаю, что это правда.. Я получаю объект, который не поддерживает это свойство или метод

4. @AedzMigraso затем попробуйте решение jQuery — jsfiddle.net/arunpjohny/psYc7/2

Ответ №2:

Если это просто строка, вы можете выполнить приведенное ниже решение..

 sAttachment = "<HTML><BODY><TABLE><TR id='tr1'><td>...</td></TR><TR id='tr2'><td>..</td></TR></TABLE></BODY></HTML>"

//convert string to JQuery element
var str = $(sAttachment);
//remove tr1 element
str.find('[id="tr1"]').remove()
//get back new string
var newStr = str.html();
  

Комментарии:

1. это также приведет к удалению td и всех других элементов под ним?

2. но вы сказали в своем вопросе What I want to do is delete tr1 and all elements under it but I can't access it using getelementbyid. , так каков ваш ожидаемый результат?

3. Я думаю, что ваш ожидаемый результат должен быть <HTML><BODY><TABLE><TR id='tr2'><td>..</td></TR></TABLE></BODY></HTML> . правильно?

Ответ №3:

использование Jquery.

 var $elem = $('#tr1');
  

Он выбирает TR id то, что имеет tr1