Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кроссбраузерно взять чилдов. пока не получается... 
V
    Опции темы
Ghirik
Дата 8.6.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Делаю так:

Код

<!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" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title block</title>
<script type="text/javascript">
<!-- // --><![CDATA[

function qwe(o) {
    cilds = o.childNodes;
    var a = cilds.length;
    while (a--) {
        document.getElementsByTagName('body')[0].innerHTML += cilds[a].nodeName + '<br />';
    }
}

// ]]>
</script>
</head>
<body>
<div style="position: absolute; width: 100px; height: 100px; z-index: 1; border: 1px solid #0000FF; left:161px; top:16px; background-color:#C0C0C0" onclick="qwe(this)">
<div></div>
<div><p></p></div>
<div></div>
<div></div>
</div>
</body>
</html>


IE молчит... Если убрать абсолютное позиционирование, то выводит имя первого чилда и потом ошибку "Требуется объект".
Вообще, требуется кроссбраузерно взять всех чилдов, исключая мозиловский #text. Имена тэгов зарание не известны. Может у кого есть готовое решение?





Это сообщение отредактировал(а) Ghirik - 8.6.2008, 10:01


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Ghirik
Дата 8.6.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Ага.. с первым моментом разобрался, в IE просто клик не происходит если див пустой, сделал заливку фона  background-color:#C0C0C0 и исправил в коде. Но на втором чилде IE так и продолжает спотыкаться....  smile

Добавлено @ 10:12
Разобрался. Это он их к body не хочет плюсовать, а в отдельный контейнер плюсует нормально.

Код

<!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" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title block</title>
<script type="text/javascript">
<!-- // --><![CDATA[
function qwe(o) {
    cilds = o.childNodes;
    var a = cilds.length;
    while (a--) {
        document.getElementById('div2').innerHTML += cilds[a].nodeName + '<br />';
    }
}
// ]]>
</script>
</head>
<body>
<div style="position: absolute; width: 100px; height: 100px; z-index: 1; border: 1px solid #0000FF; left:161px; top:16px; background-color:#C0C0C0" onclick="qwe(this)">
<div><p></p></div>
<div>kjhjkh</div>
<div>kjhjkh</div>
<div>kjhjkh</div>
</div>
<div id="div2">
</div>
</body>
</html>


Жалко, пообщаться не успели.  smile 



Это сообщение отредактировал(а) Ghirik - 8.6.2008, 11:40


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Ghirik
Дата 8.6.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Опять проблема, теперь не могу отсеять #text.
Мне по задаче нужно все чилды, отличные от #text, сложить в массив, повешанный на парента.

Делаю так:
Код

<!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" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title block</title>
<script type="text/javascript">
<!-- // --><![CDATA[
function qwe(o) {
    o = o.parentNode;
    o.childs = [];
    var childs = o.childNodes;
    var i = 0;
    while (i < childs.length) {
        if (childs[i].nodeName != '#text') o.childs[i] = childs[i];
        i++
    }
    var a = 0;
    while (a < o.childs.length) {
        document.getElementById('div2').innerHTML += o.childs[a].nodeName + '<br />';
        a++;
    }
}
// ]]>
</script>
</head>
<body>
<div style="position: absolute; width: 100px; height: 100px; z-index: 1; border: 1px solid #0000FF; left:161px; top:16px; background-color:#C0C0C0">
<div><p></p></div>
<div onclick="qwe(this)">kjhjkh</div>
<div>kjhjkh</div>
<div>kjhjkh</div>
</div>
<div id="div2">
</div>
</body>
</html>


FF ругается на отсутствие свойства nodeName у o.childs[a].

Вообще, при таком складывании элементов в массив, что в него кладется? Ссылка на элемент? Или создается копия элемента? Во всяком случае, называется полученный элемент массива "object"




--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Wolf1994
Дата 8.6.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 4
Всего: 29



Код

<!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" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title block</title>
<script type="text/javascript">
<!-- // --><![CDATA[
function qwe(o) {
    o = o.parentNode;
    o.childs = [];
    var childs = o.childNodes;
    var i = 0;
    var a = 0;
    while (i < childs.length) {
        if (childs[i].nodeName != '#text')
    {
     o.childs[a] = childs[i];
         a++;
    }
    i++;
    }
    var a = 0;
    while (a < o.childs.length) {
        document.getElementById('div2').innerHTML += o.childs[a].nodeName + '<br />';
        a++;
    }
}
// ]]>
</script>
</head>
<body>
<div style="position: absolute; width: 100px; height: 100px; z-index: 1; border: 1px solid #0000FF; left:161px; top:16px; background-color:#C0C0C0">
<div><p></p></div>
<div onclick="qwe(this)">kjhjkh</div>
<div>kjhjkh</div>
<div>kjhjkh</div>
</div>
<div id="div2">
</div>
</body>
</html


Это сообщение отредактировал(а) Wolf1994 - 8.6.2008, 11:27
PM MAIL WWW   Вверх
Ghirik
Дата 8.6.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Wolf1994, спасибо.
До меня уже  тоже дошло, что нужно два счетчика.  smile 

Бывает... smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0732 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.