Вытащить ноды из html строки

john.brown

просто кулибин
Вытащить ноды из html строки

Суть в том. что надо в таблице динамично заменить строки. Новый контент приходит по аякс в виде обычного хтмл типа '<tr><td>jhg</td><td>jh</td></tr>'. Не подскажет ли кто, как из этой строки вытащить содержание полей, дабы засунуть вместо старого содержания? Сорри, если тупой вопрос...
 

Wicked

Новичок
Можно попробовать через замену innerhtml таблицы. Тогда, насколько мне думается, старые ячейки удалятся, и добавятся новые.
 

john.brown

просто кулибин
Нет, увы, не поможет. Я попался на то, что лиса позволяет так делать, и написал нечто такое:
Код:
function changeContent(response,rowId) {
    row = document.getElementById(rowId);
    row.innerHTML = response;
}
В лисе все прекрасно менялось, но в ие не тут то было! Они реализовали дом модель согласно рекомендациям 3w, а там для table, tbody, tr атрибут innerHTML read only :( T.e. надо бы сотворить нечто подобное (псевдокод):
Код:
function changeContent(response,rowId) {
   parser = new DomParser();
   response = parser.createFromString(response);
   newTr = response.getElementsByTagName('tr');   
   tr = document.getElementById(rowId);    
   tr.replaceNode(newTr);
}
Увы, в гоогле не удалось найти сколь нибудь понятного описания сего процесса. Плз, помогите, ссылками, мыслями или кусочком кода.
Но из гооглы стало понятно, что оно платформо зависимо, т.ч. и этот вопрос больной...

-~{}~ 08.06.06 20:33:

Вопрос решил. Таким вот макаром:
Код:
function changeContent(newContent,rowId) {
	
	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");	
		xmlDoc.async="false";
		xmlDoc.loadXML(newContent);
		newTds = xmlDoc.getElementsByTagName('td');
		newTr = document.createElement('tr');
	
		for(i = 0;i < newTds.length; i++) {
			td = document.createElement('td');
			td.innerHTML = newTds[i].xml;
			newTr.appendChild(td);
		}	
		tBody = document.getElementById(rowId);
		newtBody = document.createElement('tBody');
		newtBody.appendChild(newTr);
		tBody.replaceNode(newtBody);
 	}
	else {
		tr = document.getElementById('row');
		tr.innerHTML = newContent;
	}	
}
//....
<table width="50%" border="1">
	<tBody id="row">
	<tr>
		<td>init content</td><td>more content</td>
	</tr>
	</tBody>
</table>
Если кто знает более приличное решение, велком... Или, кто знает как при помощи этого "document.implementation.createDocument" загрузить строку и пропарсить. А то реализация для FFне соответствует стандартам 3w...
 

tf

крылья рулят
попробуй всю таблицу заменить целиком innerHTML ='<table> .. </table>';
 

Ярослав

Новичок
может все-таки за это время решыл проблему?

-~{}~ 27.06.07 14:18:

Автор оригинала: tf
попробуй всю таблицу заменить целиком innerHTML ='<table> .. </table>';
немогу т.к. получаю ajax response з сформированными td их там много и уже со стилями со всеми данными и нужно их обновить для tr у которого мне известный id
надеялся на innerHTML но в IE вот такие грабли:(
 
Сверху