Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опубликовать скрытую ссылку 
:(
    Опции темы
Webtoper
Дата 22.12.2014, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.12.2014

Репутация: нет
Всего: нет



Как исправить здесь код, чтобы по клику на одну из видимых рекламных ссылок (ссылка1 или ссылка2) - появлялась невидимая ссылка3 (желательно исправив данный код, а не заменив его на другой, хочу понять что не так):
Код

<html>
<head>
<title>HTML Main page</title>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
<script type='text/javascript'>
function trans(G10) {
document.getElementById("site55").innerHTML = "";
}

function trans(G20) {
document.getElementById("site56").innerHTML = "";
}
</script>
</head>
<body>
<a href="http://ссылка1" target="_blank" id="site55" onclick="trans(G10);">SAPE</a>
<br>
<a href="http://ссылка2" target="_blank" id="site56" onclick="trans(G20);">MIRALINKS</a>
<br>
<a href="http://ссылка3" style="visibility:hidden" target="_blank" id="site57">GO!</a>
</body>
</html>

PM MAIL   Вверх
_zorn_
Дата 23.12.2014, 03:50 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Что такое G10 и G20 ?
Почему 2 функции с одним именем ?
Ну и где собствеоно изменение стиля visibility ?

Итого
Код

<html>
<head>
<title>HTML Main page</title>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
<script type='text/javascript'>
function trans(el) {
el.innerHTML = "";
document.getElementById("site57").style.visibility = "visible";
}
</script>
</head>
<body>
<a href="http://ссылка1" target="_blank" id="site55" onclick="trans(this);">SAPE</a>
<br>
<a href="http://ссылка2" target="_blank" id="site56" onclick="trans(this);">MIRALINKS</a>
<br>
<a href="http://ссылка3" style="visibility:hidden" target="_blank" id="site57">GO!</a>
</body>
</html>

PM MAIL   Вверх
Aliance
Дата 23.12.2014, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



На странице не должно быть двух элементов с одинаковым атрибутом ID - он должен быть уникален в рамках документа.
PM MAIL WWW ICQ Skype   Вверх
sQu1rr
Дата 23.12.2014, 12:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Aliance @  23.12.2014,  05:55 Найти цитируемый пост)
На странице не должно быть двух элементов с одинаковым атрибутом ID - он должен быть уникален в рамках документа. 

А их и нет.

Код

function trans(G10) {
document.getElementById("site55").innerHTML = "";
}
trans(G10);

Уважаемый Webtoper, почитайте пожалуйста о функциях и их аргументах в гугле. Не могут быть две функции с одинаковыми именами в одной области видимости.

Вкратце. Вы делаете функцию которая что-то принимает
Код

function func(a, b) {
    return a+b;
}
func(1,2); // а потом вызываете с аргументами, вернет 3.

В вашем коде вы вызываете функцию с аргументов G10, и предпологаете что вызовется trans(G10). Но на самом деле, javascript понятия не имеет что такое G10, а ваши объявленные функции имеют одну и ту же сигнатуру ( trans(arg) ).
Посмотрите код _zorn_, - он передает аргументов this - что есть вызывающий элемент (то есть <a> на каторый нажали). Поэтому можно вызывать методы прямо на этом аргументе, при этом его не нужно искать предварительно с помощью document.getElementById()

Это сообщение отредактировал(а) sQu1rr - 23.12.2014, 12:43
PM MAIL Skype GTalk   Вверх
Webtoper
Дата 23.12.2014, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.12.2014

Репутация: нет
Всего: нет



Cпасибо за разъяснения, вроде понял. Zorn, очень интересно подправили, исследую код, разбор полетов делаю (в частности, почему исчезает нажатая ссылка - хотя так и надо, но все же хочу понять логику)...
По ходу возник еще один вопрос - как сделать так, чтоб при нажатии на одну из рекламных ссылок - появлялась третья, а исчезала не только нажатая, но и вторая... То есть, чтобы при нажатии на одну из рекламных (видимых) ссылок - обе они исчезали, а публиковалась на странице только третья (на основе Вашего кода)? 

PM MAIL   Вверх
sQu1rr
Дата 23.12.2014, 13:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Webtoper @  23.12.2014,  11:22 Найти цитируемый пост)
То есть, чтобы при нажатии на одну из рекламных (видимых) ссылок - обе они исчезали, а публиковалась на странице только третья (на основе Вашего кода)? 


Такие вот изменения:
Код

<a href="http://ссылка1" target="_blank" id="site55" onclick="trans();">SAPE</a>
<br>
<a href="http://ссылка2" target="_blank" id="site56" onclick="trans();">MIRALINKS</a>
<br>
<a href="http://ссылка3" style="visibility:hidden" target="_blank" id="site57">GO!</a>


Код

function trans() {
    document.getElementById("site55").innerHTML = "";
    document.getElementById("site56").innerHTML = "";
    document.getElementById("site57").style.visibility = "visible";
}

PM MAIL Skype GTalk   Вверх
Webtoper
Дата 23.12.2014, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.12.2014

Репутация: нет
Всего: нет



То есть, как я понял, функция проходи по ссылкам и когда видит innerHTML = "" - она понимает что нужно стереть, то есть ничего не написать после срабатывания функции? Правильно я понял, почему исчезают ссылки?
Код

function trans() {
    document.getElementById("site55").innerHTML = "";
    document.getElementById("site56").innerHTML = "";
    document.getElementById("site57").style.visibility = "visible";
}

PM MAIL   Вверх
sQu1rr
Дата 23.12.2014, 18:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Webtoper @  23.12.2014,  16:23 Найти цитируемый пост)
о есть, как я понял, функция проходи по ссылкам и когда видит innerHTML = "" - она понимает что нужно стереть, то есть ничего не написать после срабатывания функции? Правильно я понял, почему исчезают ссылки?

Не думаю

Код

document.getElementById("site56").innerHTML = "";

document.getElementById("site56") // найти элемент с ID site56
document.getElementById("site56").innerHTML // innerHTML это атрибут ПРЕНАДЛЕЖАЩИЙ элементу (точка вызывает метод/аттрибут объекта слева),
// он содержит весь код между двумя тагами, в данном случае MIRALINKS. Если есть еще таги внутри, они будут содержаться там же в текстовом варианте

document.getElementById("site56").innerHTML = ""; // вы изменяете содержание внутри <a id="site56">ВОТ ЭТО СОДЕРЖАНИЕ</a>, на пустую строку.
//ссылка остается, но так как текста нет она не отображается


Это сообщение отредактировал(а) sQu1rr - 23.12.2014, 18:41
PM MAIL Skype GTalk   Вверх
Webtoper
Дата 25.12.2014, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.12.2014

Репутация: нет
Всего: нет



Как здесь сделать, чтобы при переходе по одной рекламной ссылке - исчезали обе, и оставалась после перехода на странице только основная ссылка "GO" ?
Код

<html>
<head>
<title>HTML Main page</title>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
<script type='text/javascript'>
function trans(el) {
el.innerHTML = "";
document.getElementById("site57").style.visibility = "visible";
}
</script>
</head>
<body>
<a href="http://ссылка1" target="_blank" id="site55" onclick="trans(this);">SAPE</a>
<br>
<a href="http://ссылка2" target="_blank" id="site56" onclick="trans(this);">MIRALINKS</a>
<br>
<a href="http://ссылка3" style="visibility:hidden" target="_blank" id="site57">GO!</a>
</body>
</html>

PM MAIL   Вверх
Aliance
Дата 25.12.2014, 16:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Код

<a href="http://ссылка1" target="_blank" id="site55" onclick="trans()">SAPE</a>
<br>
<a href="http://ссылка2" target="_blank" id="site56" onclick="trans()">MIRALINKS</a>
<br>
<a href="http://ссылка3" style="visibility:hidden" target="_blank" id="site57">GO!</a>

Код

function trans() {
// скрываем обе ссылки, нам все равно на какую из них кликнули
// NB: возможно будет лучше использовать display: none, решать вам
document.getElementById("site55").style.visibility = "hidden";
document.getElementById("site56").style.visibility = "hidden";
// показывает изначально скрытую
document.getElementById("site57").style.visibility = "visible";
}

PM MAIL WWW ICQ Skype   Вверх
Webtoper
Дата 26.12.2014, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.12.2014

Репутация: нет
Всего: нет



Проверил - вообще не срабатывает... Обе рекламные ссылки остаются, а основная не появляется...

Это сообщение отредактировал(а) Webtoper - 26.12.2014, 01:37
PM MAIL   Вверх
sQu1rr
Дата 26.12.2014, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Webtoper @  25.12.2014,  23:27 Найти цитируемый пост)
Проверил - вообще не срабатывает... Обе рекламные ссылки остаются, а основная не появляется...

вы правда думаете что здесь люди дают нерабочий код? выложите код на jsfiddle что бы мы тоже видели что не работает
PM MAIL Skype GTalk   Вверх
Aliance
Дата 26.12.2014, 09:34 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Давайте разберем что же происходит на самом деле? Вы кликаете на ссылку (тег <a>), у которой установлен атрибут href, а так же она должны открываться в новом окне (target="_blank"). Что будет при клике на эту ссылку? Правильно - в новом окне откроется адрес, указанный в href. И то, что вы пытаетесь что-то сделать при клике (onclick), никак на это поведение не влияет. Фактически, у вас открывается новый таб, а потом происходит JS (и ссылка все же скрываться должна ;-) ). 

Чтобы в обработчике клика убрать поведение браузера по умолчанию, нужно поймать событие и отменить это действие. Это делается с помощью метода preventDefault() (в событийной модели IE - через свойство returnValue). Подробнее о событиях можно почитать по первой ссылке в моей подписи.

Во пример: http://jsfiddle.net/Aliance/s0jt0buz/1/
PM MAIL WWW ICQ Skype   Вверх
Webtoper
Дата 26.12.2014, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 8.12.2014

Репутация: нет
Всего: нет



Цитата(sQu1rr @  26.12.2014,  09:29 Найти цитируемый пост)
выложите код на jsfiddle что бы мы тоже видели что не работает 

Вот:
http://jsfiddle.net/Webtoper/xodn18tw/ - ссылки не скрываются почему то...


Цитата(Aliance @  26.12.2014,  09:34 Найти цитируемый пост)
Давайте разберем что же происходит на самом деле? Вы кликаете на ссылку (тег <a>), у которой установлен атрибут href, а так же она должны открываться в новом окне (target="_blank"). Что будет при клике на эту ссылку? Правильно - в новом окне откроется адрес, указанный в href. И то, что вы пытаетесь что-то сделать при клике (onclick), никак на это поведение не влияет. Фактически, у вас открывается новый таб, а потом происходит JS (и ссылка все же скрываться должна ;-) ). 
javascript: sendForm('submit');
Чтобы в обработчике клика убрать поведение браузера по умолчанию, нужно поймать событие и отменить это действие. Это делается с помощью метода preventDefault() (в событийной модели IE - через свойство returnValue). Подробнее о событиях можно почитать по первой ссылке в моей подписи.

Спасибо, разбираюсь с preventDefault() Там нюанс такой - ссылки исчезают, но переход по ним не происходит...
p.s. Извините, случайно нажал не на ту звездочку для благодарности, но в другом сообщении по максимуму поставил.

Это сообщение отредактировал(а) Webtoper - 26.12.2014, 18:51
PM MAIL   Вверх
Aliance
Дата 29.12.2014, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Webtoper, не происходит, потому что preventDefault блокирует этот переход. Я не очень понимаю, а что должно быть? Вы хотите и чтобы был переход в новом окне, и чтобы ссылки скрылись? Как-то это странно тогда, обычно после перехода мало кто уже смотрим назад в предыдущую вкладку.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0927 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.