Главная страница
    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.046 c
2-1130853359
3JIO
2005-11-01 16:55
2005.11.20
Базы


2-1130859825
Grol
2005-11-01 18:43
2005.11.20
Удалить память выделенную под нужды компонента...


2-1130420069
Win32
2005-10-27 17:34
2005.11.20
ComboBox


14-1130537892
LordOfRock
2005-10-29 02:18
2005.11.20
Вслед за Kaif oм :-)


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский