#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