Показать сообщение отдельно
  #1 (permalink)  
Старый 30.11.2009, 16:02
Интересующийся
Отправить личное сообщение для EmDmAl Посмотреть профиль Найти все сообщения от EmDmAl
 
Регистрация: 06.11.2009
Сообщений: 17

Получение текстового содержимого из всех вложенных DOM
Здравствуйте. В книге "Подробное руководство" Дэвида Флэнагана описан пример, Получение текстового содержимого из всех вложенных DOM'узлов стр.334. Вся проблема втом что в массив string ничего незаносится, немогу понять почему?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link rel="stylesheet" type="text/css" href="steel.css" />
<head>
<title></title>
</head>
<body>
Это <i>пример</i> документа.
<br><br>
<input value="Вывод текста" type="button" onClick="alert(getText(document))">
<script language="javascript">
function getText(n) {
// Операция объединения строк очень ресурсоемка, потому сначала
// содержимое текстовых узлов помещается в массив, затем выполняется
// операция конкатенации элементов массива в одну строку.
var strings = [];

getStrings(n, strings);
return strings.join("");
// Эта рекурсивная функция отыскивает все текстовые узлы
// и добавляет их содержимое в конец массива.
function getStrings(n, strings) {
if (n.nodeType == 3 /* Node.TEXT_NODE */)
strings.push(n.data);
else if (n.nodeType == 1 /* Node.ELEMENT_NODE */) {
// Обратите внимание, обход выполняется
// с использованием firstChild/nextSibling
for(var m = n.firstChild; m != null; m = m.nextSibling) {
getStrings(m, strings);
}
}
}
}
alert(strings[2]);
</script>
<table>
<tr><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
<tr class='odd'><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
<tr><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
<tr><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
<tr><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
<tr><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
<tr><td>One</td><td>Two</td><td>Three</td><td>Four</td></tr>
</table>
</body>
Ответить с цитированием