Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужна помощь в модификации скрипта (https://javascript.ru/forum/misc/42410-nuzhna-pomoshh-v-modifikacii-skripta.html)

zonkon 25.10.2013 00:08

Нужна помощь в модификации скрипта
 
Появилась идея модифицировать скрипт
<SCRIPT LANGUAGE="JavaScript">
 function getCookie(name) {
 var cookie = " " + document.cookie;
 var search = " " + name + "=";
 var setStr = null;
 var offset = 0;
 var end = 0;
 if (cookie.length > 0) {
 offset = cookie.indexOf(search);
 if (offset != -1) {
 offset += search.length;
 end = cookie.indexOf(";", offset)
 if (end == -1) {
 end = cookie.length; }
 setStr = unescape(cookie.substring(offset, end)); } }
 return(setStr);}
 var block = document.cookie.indexOf('block');
 if ( block != -1 )
 { alert('привет'); }
 else
 { alert('пока'); }
</SCRIPT>

А смысл такой. В скрипте видно что при наличии куки block высвечивается одно сообщение, а при отсутствии другое. Но хочется его немного изменить. Нужно чтобы при наличии куки block высвечивалась ссылка на нужную страницу сайта, а при отсутствии ссылка не должна высвечиваться.
Нашел как сделать ссылку невидимой или видимой
<span  style="visibility: hidden ">
 <a href="http://Мой сайт">Видимая/Невидимая ссылка</A>
</span>

попробовал сделать следующее
<SCRIPT LANGUAGE="JavaScript">
 function getCookie(name) {
 var cookie = " " + document.cookie;
 var search = " " + name + "=";
 var setStr = null;
 var offset = 0;
 var end = 0;
 if (cookie.length > 0) {
 offset = cookie.indexOf(search);
 if (offset != -1) {
 offset += search.length;
 end = cookie.indexOf(";", offset)
 if (end == -1) {
 end = cookie.length; }
 setStr = unescape(cookie.substring(offset, end)); } }
 return(setStr);}
 var block = document.cookie.indexOf('block');
 if ( block != -1 )
 { <span  style="visibility: visible "><a href="http://Мой сайт">Видимая ссылка</A></span> }
 else
 { <span  style="visibility: hidden "><a href="http://Мой сайт">Невидимая ссылка</A></span> }
</SCRIPT>

Но как вы уже догадались ничего не получилось. Насколько я понял строки <span></span> в самом скрипте быть не должно и ссылка на страницу может быть в любом другом месте. Но как тогда вызвать скрипт и присвоить значение visible или hidden в зависимости от наличия или отсутствия куки block?

danik.js 25.10.2013 00:15

пропиши айдишник своему span'у, по нему можешь управлять видимостью:
document.getElementById('mylink').style.display = 'none' // 'inline' для видимости

zonkon 25.10.2013 00:44

А куда это нужно вставлять?

danik.js 25.10.2013 05:04

Туда же

zonkon 25.10.2013 15:35

Значит, как я понимаю, скрипт должен иметь такой вид?
<SCRIPT LANGUAGE="JavaScript">
 function getCookie(name) {
 var cookie = " " + document.cookie;
 var search = " " + name + "=";
 var setStr = null;
 var offset = 0;
 var end = 0;
 if (cookie.length > 0) {
 offset = cookie.indexOf(search);
 if (offset != -1) {
 offset += search.length;
 end = cookie.indexOf(";", offset)
 if (end == -1) {
 end = cookie.length; }
 setStr = unescape(cookie.substring(offset, end)); } }
 return(setStr);}
 var block = document.cookie.indexOf('block');
 if ( block != -1 )
 {  document.getElementById('mylink').style.display = 'inline';}
 else
 {  document.getElementById('mylink').style.display = 'none'; }
</SCRIPT>

Появляется еще вопрос КУДА ВСТАВЛЯТЬ ССЫЛКУ НА СТРАНИЦУ?

danik.js 25.10.2013 15:47

Цитата:

Сообщение от zonkon
Появляется еще вопрос КУДА ВСТАВЛЯТЬ ССЫЛКУ НА СТРАНИЦУ?

Туда, где ее нужно вывести. Спасибо кстати, что повысили меня до звания Капитана.

zonkon 25.10.2013 15:52

То есть как то так?
<SCRIPT LANGUAGE="JavaScript">
 function getCookie(name) {
 var cookie = " " + document.cookie;
 var search = " " + name + "=";
 var setStr = null;
 var offset = 0;
 var end = 0;
 if (cookie.length > 0) {
 offset = cookie.indexOf(search);
 if (offset != -1) {
 offset += search.length;
 end = cookie.indexOf(";", offset)
 if (end == -1) {
 end = cookie.length; }
 setStr = unescape(cookie.substring(offset, end)); } }
 return(setStr);}
 var block = document.cookie.indexOf('block');
 if ( block != -1 )
 {  document.getElementById('mylink').style.display = 'inline';}
 else
 {  document.getElementById('mylink').style.display = 'none'; }
</SCRIPT>

<span style="id='mylink'"><a href="http://test.com">Невидимая ссылка</A></span>

danik.js 25.10.2013 15:56

Почти. только скрипт нужно опустить ниже, либо ждать события DOMContentLoaded

zonkon 25.10.2013 15:58

Ниже span?

zonkon 25.10.2013 16:09

Если честно я не совсем до конца понимаю этот алгоритм. На данный момент ссылка "Невидимая ссылка" высвечивается постоянно.

danik.js 25.10.2013 17:14

Цитата:

Сообщение от zonkon
<span style="id='mylink'">

Че это за фигня?
<span id="mylink">

zonkon 25.10.2013 22:42

Это был эксперимент. Неудачный.
Если рассуждать логично, строка со ссылкой должна иметь примерно такой вид
<span 
style="visibility: hidden "><a href="http://Мой сайт">Невидимая ссылка</a>
</span> }

а параметр hidden как то должен менять на visible в зависимости от значения 'mylink', т.е. none или inline. Такое ощущение что это масло маслянное. Но ведь должно же быть какое то решение...

zonkon 25.10.2013 23:37

<SCRIPT LANGUAGE="JavaScript">
 function getCookie(name) {
 var cookie = " " + document.cookie;
 var search = " " + name + "=";
 var setStr = null;
 var offset = 0;
 var end = 0;
 if (cookie.length > 0) {
 offset = cookie.indexOf(search);
 if (offset != -1) {
 offset += search.length;
 end = cookie.indexOf(";", offset)
 if (end == -1) {
 end = cookie.length; }
 setStr = unescape(cookie.substring(offset, end)); } }
 return(setStr);}
 var block = document.cookie.indexOf('block');
 if ( block != -1 )
 { document.getElementById('mylink').style.display = 'inline';}
 else
 { document.getElementById('mylink').style.display = 'none'; }
</SCRIPT>

<span id="mylink"><a href="http://test.com">Невидимая ссылка</a></span>

Ссылка высвечивается при любых условиях... Подскажите пожалуйста, что не так...

danik.js 26.10.2013 07:46

Цитата:

Сообщение от zonkon
Подскажите пожалуйста, что не так...

Это бесполезно тебе подсказывать. Тебе уже было сказано, перечитывай предыдущие ответы.

zonkon 26.10.2013 09:25

Понять все это не каждому дано... Я всю жизнь отработал за станком и могу с закрытыми глазами выточить любую деталь, а разобраться во всем этом не получается, хотя очень надо.
Спасибо за помощь! Буду стараться дальше.

danik.js 26.10.2013 09:40

Отсылка была к #8 комментарию (про порядок скрипта и ссылки)


Часовой пояс GMT +3, время: 10:46.