Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: FF не поддерживает innerText в <fieldset>?
 
 автор: coloboc66   (01.03.2007 в 11:30)   письмо автору
 
 

У меня в <fieldset id=field1> запихиваются один за одним (как в чате) теги <font style="..."> какой-то текст</font><br>. Потом я вытягиваю оттуда верхнюю строку во так:
var params=document.getElementById('field_1').innerText.match(/(.+)/)[0];
В ИЕ и Опере это прокатывает, а в Лисе пишет innerText has no property Как это можно обойти?
Я только вижу, что можно из переменной params удалить все, что находится между открывающими и закрывающими дескрипторами тегов и сами дескрипторы, чтобы оставить только чистый текст, но как это сделать- в голову не приходит.

   
 
 автор: Padonak   (01.03.2007 в 11:57)   письмо автору
 
   для: coloboc66   (01.03.2007 в 11:30)
 

ну во-первых за тег "фонт" тебя надо в угол поставить... а потом - зачем там match? пихай туда не фонты а спаны и они насколько я понимаю будут childNodes для данного элемента. вот и обращайся к элементу массива childNodes[какой нужен]

   
 
 автор: AlexSol   (01.03.2007 в 12:05)   письмо автору
 
   для: Padonak   (01.03.2007 в 11:57)
 

вместо innerText использовать innerHtml

   
 
 автор: Lelik   (01.03.2007 в 12:11)   письмо автору
 
   для: AlexSol   (01.03.2007 в 12:05)
 

innerHTML

   
 
 автор: coloboc66   (01.03.2007 в 12:42)   письмо автору
 
   для: Lelik   (01.03.2007 в 12:11)
 

innerHTML выдаст мне все содержимое - вместе с дескрипторами, стилями и т.д., а мне нужен только текст. А <font> я брал для того, чтобы можно было управлять его видом по-разному.
Попробовал не через match, а через childNodes:
alert(document.getElementById('field1').childNodes(0).innerText);
получил ошибку document.getElementById('field1').childNodes is not a function...
Кстати и этот форум в лисе работает некорректно. КОнченая лиса...
А что: <span> для <fildset> - childNode, а <font> - нет?! Это так???

   
 
 автор: mesos   (01.03.2007 в 14:11)   письмо автору
 
   для: coloboc66   (01.03.2007 в 12:42)
 


alert(document.getElementById('field1').childNodes[1].innerHTML);

1. childNodes - не функция =)
2. Почему childNodes[1] ?
&nbsp; Потому что наверняка у вас между <fieldset id="field1"> и <span> есть хотя бы один символ (например перевод строки).
Если же элементы идут без разрыва (<fieldset id="field1"><span>...) то брать childNodes[0].
3. Тэг <font> нежелателен к применению (читайте спецификацию HTML 4.01)
4. Свойства innerText не существует (читайте спецификацию DOM)
Если у вас текст в span, то при обращении к childNodes[1].innerHTML вы не получите ни стилей, ни дескрипторов тэга (если конечно внутри <span> ничего больше нет).

   
 
 автор: Padonak   (01.03.2007 в 20:03)   письмо автору
 
   для: mesos   (01.03.2007 в 14:11)
 

> mesos походу лучше ему пример сделать чем объяснять :-) спецификацию не уважает ДОМ не знает ФФ ему не такой :-)) вот народ блин...

   
 
 автор: coloboc66   (02.03.2007 в 11:47)   письмо автору
 
   для: Padonak   (01.03.2007 в 20:03)
 

2. Почему childNodes[1] ?
&nbsp; Потому что наверняка у вас между <fieldset id="field1"> и <span> есть хотя бы один символ (например перевод строки).
Если же элементы идут без разрыва (<fieldset id="field1"><span>...) то брать childNodes[0].

Так вот для Лисы и ИЕ у меня получается childNodes[1] а для Оперы - childNodes[0]
to Padonak: что вы тут жизни учите? DOM не знает никто, включая разработчиков броузеров, если разные броузеры интерпретируют узлы по-разному.
Учитель, блин...

   
 
 автор: mesos   (02.03.2007 в 12:21)   письмо автору
 
   для: coloboc66   (02.03.2007 в 11:47)
 

Да ладно вам ругаться-то! =)
Кстати в Opera 9.01 все правильно (childNodes[1]), так что единственный выход вижу в определении браузера и версии.

   
 
 автор: coloboc66   (02.03.2007 в 16:25)   письмо автору
 
   для: mesos   (02.03.2007 в 12:21)
 

Да вот и я к этому пришел.

   
 
 автор: fear.86   (02.03.2007 в 16:43)   письмо автору
 
   для: coloboc66   (02.03.2007 в 16:25)
 

Не морочте голову, все будет работать есле проверять nodeType

эта функция работает для всех элементов кроме body:



function Child()
{
    var w=arguments[0].childNodes, NOD=new Array;
    for(var i=0;i<w.length;i++)
    {if(w[i].nodeType==1)NOD[NOD.length]=w[i];}
    if(arguments[1]=='length')    return NOD.length;
    else if(arguments[1]<NOD.length)
    return NOD[arguments[1]];
    else return false;}



юзать так: Child(Обьект, НомерУзла);
вернет Обьект...

Кстате может кто подсажет почему body.nodeType для всех элементов возвращает 1

   
 
 автор: Padonak   (02.03.2007 в 18:10)   письмо автору
 
   для: fear.86   (02.03.2007 в 16:43)
 

2 colob ну прости если затронул нежные места твоей души :-)) пусть так и будет как ты говоришь: никто не знает ДОМ все пользуются фонтами (желательно в верхнем регистре) все браузеры кривые и т.д. я ни в коем случае не претендовал на твои лавры ты что! упаси меня и сохрани тебя учить тем более что я сантехником работаю (заметь даю информацию к размышлению :-)))) и мне недоумку лучше молча читать форум чем и займусь прямо сейчас :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования