Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.061 c
1-1130336571
Суслик
2005-10-26 18:22
2005.11.20
Вопрос про mouseUp


14-1130527269
01e9
2005-10-28 23:21
2005.11.20
Зацените мою игру (delphiX)


14-1130707919
Gero
2005-10-31 00:31
2005.11.20
Вышла Civilization IV


14-1130409778
_xroot
2005-10-27 14:42
2005.11.20
Указатель на папку


14-1130352465
Gero
2005-10-26 22:47
2005.11.20
Гениальность дизайна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский