Форум: "Потрепаться";
Текущий архив: 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