Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Opera + JavaScript = ?   Найти похожие ветки 

 
Nous Mellon_   (2005-10-24 23:20) [0]

Здравствуйте, уважаемые форумчане. Появилась проблема -- спешу поделиться.

На разрабатываемой странице я активно использую Java Script
Хочу представить маленький проблемный кусочек на не слишком строгий суд общественности.
Итак есть тестовая страница:
----------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>

<script language="JavaScript">
function Change()
{
 alert(document.anchors[0].innerText);
}
</script>

<body>

<a id="an1" class="basetext" onclick="Change()"> Ту-ру-ту-ту </a>

</body>
</html>

-----------------------------------------

Все просто, при нажатии на якорь "an1", надпись "Ту-ру-ту-ту" появляется в маленьком окошечке
для сообщений. Но даже эта маленькая поделка по разному себя ведет в разных броузерах.
В IE проблем нет, а в Опере не происходит ничего. Отрыв JS Console в Опере вижу следующее сообщение
------------------
Event thread: click
Error:
name: TypeError
message: Statement on line 4: Could not convert undefined or null to object
Backtrace:
 Line 4 of inline#1 script in file://localhost/C:/1.html
   alert(document.anchors[0].innerText);
 Line 1 of  script
   Change();
 At unknown location
   [statement source code not available]
---------------------

К сожалению, внятно интерпретировать текст я не смог.
Интересует в чем причина ошибки и как ее исправить.
Возможно, этот код не соответствует какой-то конвенции или стандарту?
Если так подскажите, как правильно решить подобную задачу, при этом хотелось бы не обращаться
к якорю конструкцией document.all.[nameOfAnchor], а брать как здесь из массива.


 
Ломброзо ©   (2005-10-24 23:32) [1]

свойство innerText в опере не реализовано. Используйте innerHTML.
Воообще реализация DOM и JavaScript в опере откровенно фуфловая.


 
Gero ©   (2005-10-25 00:22) [2]


Ломброзо ©   (24.10.05 23:32)
> Воообще реализация DOM и JavaScript в опере откровенно фуфловая.

Клевета.

Nous Mellon_   (24.10.05 23:20)
> подскажите, как правильно решить подобную задачу

document.getElementById("an1").firstChild.nodeValue


 
Gero ©   (2005-10-25 00:37) [3]

Сорри, был невнимателен, не увидел:

> при этом хотелось бы не обращаться
> к якорю конструкцией document.all.[nameOfAnchor], а брать
> как здесь из массива.

Тогда так:

document.getElementsByTagName("a")[0].firstChild.nodeValue


 
Nous Mellon_   (2005-10-25 08:12) [4]


>  [3] Gero ©   (25.10.05 00:37)

Спасибо, огромное, так работает и там и там.
Но возник еще вопрос: как теперь такой конструкцией обратиться к другим свойствам, например className и href?

И, если не затруднит, где можно найти  справку по поддерживаемой объектной модели большинством браузеров, чтобы не гоняться на форум за каждым свойством или объектом.


 
Nous Mellon_   (2005-10-26 09:20) [5]

Еще актуально


 
k2 ©   (2005-10-26 09:54) [6]

может через getAttribute/setAttribute ?


 
Gero ©   (2005-10-26 10:44) [7]


> Но возник еще вопрос: как теперь такой конструкцией обратиться
> к другим свойствам, например className и href?

document.getElementsByTagName("a")[0].className
document.getElementsByTagName("a")[0].href

> И, если не затруднит, где можно найти  справку по поддерживаемой
> объектной модели большинством браузеров

http://w3c.com

Но все равно все нужно проверять в каждом браузере.


 
Nous Mellon_   (2005-10-28 18:54) [8]

Долго не было инета, было проблемой ответить и поблагодарить.

Gero спасибо огромное!

Если можно, еще вопрос, как и когда употребляется firstChild? Я из МСДН не очень осознал.


 
Nous Mellon_   (2005-10-29 08:25) [9]

Вдогонку еще вопрос, дабы не засорять форум новыми ветками.

Если к примеру firstChild.nodeValue у объекта отсутствует(если в документе
тег вида <a> </a> без текста внутри якоря), то простое присвоение дает Script Error. Как можно этого избежать?


 
Gero ©   (2005-10-29 11:10) [10]


> Если можно, еще вопрос, как и когда употребляется firstChild?

Когда нужно получить ссылку на первый дочерний узел. Эквивалентно childNodes[0]. Вобще, рекомендую почитать какую-нибудь книгу или документацию, вопросов вознкнет наверняка еще немало.

> Если к примеру firstChild.nodeValue у объекта отсутствует(если
> в документе
> тег вида <a> </a> без текста внутри якоря), то простое присвоение
> дает Script Error. Как можно этого избежать?

var a = document.createTextNode("текст");
some_element.appendChild(a);


 
Nous Mellon_   (2005-10-29 18:40) [11]


>  [10] Gero ©   (29.10.05 11:10)

Спасибо огромное!

Из документации, что порекомендуешь(МСДН использую).


 
Gero ©   (2005-10-30 00:43) [12]


> Nous Mellon_   (29.10.05 18:40)

http://w3c.org

МСДН для изучения DHTML не рекомендую.


 
Nous Mellon_   (2005-10-30 01:02) [13]


> МСДН для изучения DHTML не рекомендую.

Почему?
> http://w3c.org

Спасибо, в закладках

А на русском что-нибудь используешь?


 
Gero ©   (2005-10-30 01:07) [14]


> Почему?

Потому что это не технология Microsoft.

> А на русском что-нибудь используешь?

На русском читал книги.


 
Nous Mellon_   (2005-10-30 01:27) [15]


>
> На русском читал книги.

Какие и есть ли в электронном виде?


 
Gero ©   (2005-10-30 09:30) [16]


> Какие и есть ли в электронном виде?

Пол Мак-Федрис «Использование JavaScript». Очень хорошая книга. Есть ли в электронном виде — не знаю.


 
Nous Mellon_   (2005-10-30 19:52) [17]

Спсаибо.

И последний вопрос: как ты считаешь, как правильно и без излишних извращений решить следующий вопрос? Предположим, есть процедура, которая должна в зависимости от чего-либо работать по-разному. Как можно "невидимо" оставить на странице информацию(некий флаг), который потом анализировать в коде и на финише менять на обратный?


 
Gero ©   (2005-10-30 22:36) [18]


> Nous Mellon_   (30.10.05 19:52)

flag = true;


 
Nous Mellon_   (2005-10-31 08:17) [19]


> flag = true;

Если я правильно понял эту строку, то ты хочешь сказать что время жизни переменной в скрипте не ограничено временем выполнения всего кода?


 
Gero ©   (2005-10-31 08:44) [20]


> Nous Mellon_   (31.10.05 08:17)

Обьясни подробнее, что тебе нужно, может я тебя плохо понял.



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.065 c
2-1130933037
~SaM~
2005-11-02 15:03
2005.11.20
Как сделать так, что бы окно программы было поверх ВСЕХ окон?


2-1130827943
Helen
2005-11-01 09:52
2005.11.20
Помогите разобраться с DBGridEh


14-1130481111
Иг_Иг
2005-10-28 10:31
2005.11.20
Басков Повалий - Ты далеко, Помогите отыскать эту песню !


2-1130694384
JBL
2005-10-30 20:46
2005.11.20
dbGrid


2-1130604470
Win_sido
2005-10-29 20:47
2005.11.20
Delfi 7