Помогите - простой java-скрипт "Отгадай загадку"

[Удален]
3965

Доброго дня.

Может кто поможет, нужен один простой java-скрипт "Отгадай загадку".

Сначала идет текст загадки - "Текст загадки бла-бла-бла". За ним идет ссылка "Правильный ответ". При нажатии на ссылку, она должна исчезнуть, должен появится текст ответа "Текст ответа бла-бла-бла". Важно - если в браузере будет отключен java-script, то должен отображатся только "Текст загадки бла-бла-бла", а ссылка и сам правильный ответ не должны отображатся.

Нашел такой скрипт:

<p align=justify>Текст загадки бла-бла-бла


<script type="text/javascript">
// Получаем элемент и текст через параметры
function textIt(element, text) {
// Создаем текстовый узел с нашим текстом
var textNode = document.createTextNode(text);
// Заменяем вызвавшую ссылку на этот узел
element.parentNode.replaceChild(textNode, element);
}
</script>

<!-- вызываем функцию в обработчике события onclick, возвращаем false, чтоб не выполнялся переход по ссылке -->
<a href="javascript://" onclick="textIt(this, 'Текст ответа бла-бла-бла'); return false">Правильный ответ</a>

</p>

Он почти работает, но при отключенном java-script ссылка "Правильный ответ" не пропадает, а нажав на нее ничего не происходит. Спасибо, кто поможет.

IL
На сайте с 20.04.2007
Offline
435
#1



<p align=justify>Текст загадки бла-бла-бла
<script>
document.write('<a href="javascript://" onclick="textIt(this, \'Текст ответа бла-бла-бла\'); return false">Правильный ответ</a>');
</script>
<noscript>[...браузер должен поддерживать JavaScript]</noscript>
</p>

<p align=justify>Текст загадки бла-бла-бла
<script>
document.write('<a href="javascript://" onclick="textIt(this, \'Текст ответа бла-бла-бла\'); return false">Правильный ответ</a>');
</script>
<noscript>[...браузер должен поддерживать JavaScript]</noscript>
</p>

<script type="text/javascript">
// Получаем элемент и текст через параметры
function textIt(element, text) {
// Создаем текстовый узел с нашим текстом
var textNode = document.createTextNode(text);
// Заменяем вызвавшую ссылку на этот узел
element.parentNode.replaceChild(textNode, element);
}
</script>
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
DiAksID
На сайте с 02.08.2008
Offline
236
#2

1. document.write(...) зло 🙅 этого костыля надо избегать в любых случаях, тем более, что здесь вёрстка будет "дёргаться" в промежутке до/после отработки скриптов. лучше по умолчанию сЦилке задать "visibility: hidden" а потом скриптом менять на "visible"

2. href="javascript://" зло 😂 не меньшее, досточно href="#" и что бы функция онклика возвращала false для полного щастья

show must go on !!!...
IL
На сайте с 20.04.2007
Offline
435
#3
DiAksID:
1. document.write(...) зло

Может и зло, но на over9000 сайтах долгие годы успешно используется счётчиком LI и гарантированно будет работать [в любом браузере с JS]...

Всего 1.64 млн. сайтов, сегодня 2.78 млрд. просмотров, вчера - 9.60 млрд.
DiAksID:
досточно href="#"

И вымораживающий "переброс" к верхней части страницы..

p.s. Да, конечно правильнее вешать одну функцию обработчик на все ссылки (непосредственно в коде, или по селектору), можно обойтись вообще без ссылок /span+onclick/, можно использовать visibility:hidden или display:none для ответов или вообще подгружать ответы ajax-ом.. А при использовании JS-библиотек можно "красиво" уложиться в пару строк.

DiAksID
На сайте с 02.08.2008
Offline
236
#4
ivan-lev:
Может и зло, но на over9000 сайтах долгие годы успешно используется счётчиком LI и гарантированно будет работать [в любом браузере с JS]...

вот нифига не довод 😂 счётчики особый случай + вёрстка дёргаться будет как ни крути в 99% случаев, без дополнительных телодвижений...

заодно, прогуглите "открытое письмо" Gooogle, в котором ребятки признаются, что даже в их действующем коде полно идиотизма и ни в коем случае не надо принимать это за стандарт...

ivan-lev:
И вымораживающий "переброс" к верхней части страницы..

достаточно вернуть false, хотя кошернее event.preventDefault...

это два правила обычной "чистоплотности кода" не более того. ну а кому нравиться "борьба в грязи" - их право...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий