Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2015, 23:04
Аспирант
Отправить личное сообщение для zerofx Посмотреть профиль Найти все сообщения от zerofx
 
Регистрация: 08.11.2013
Сообщений: 78

замена линков при клике
привет всем - поставили мне одну задачу ...

есть две ссылки- первая уже прописана в href и открывается в новом окну при клике (это работает), и после клика и после открытия в новом окне - в href должна поместиться вторая ссылка - и так столько сколько раз кликните на ссылку

я кажется понимаю как оно должно работать ... логику, но на практике не могу его заставить заработать ....

в общем - результатов + ошибок - нет ...

помогите разобраться

https://jsfiddle.net/rao1qptx/



<a target="_blank" class="link" href="http://www.ya.ru">LINK</a>


$(document).ready(function() {
    $('.link').click(function() {
        var first_url = 'http://www.ask.com'; // ссылка на аск
        var second_url = 'http://www.ya.ru'; // ссылка на яндекс
        var true_url = $(this).attr('href'); //помещаю ссылку которая есть на данный момент в href

        link_sort(); // инициалізирую функцию

        function link_sort() {
            if (true_url == first_url) { //сравниваю силки
                $(this).attr('href', second_url) // если не совпадают то ставим это в хреф
            } else {
                $(this).attr('href', first_url) // если не совпадают то ставим это в хреф
            };
        }

    });
Ответить с цитированием
  #2 (permalink)  
Старый 17.09.2015, 23:19
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

смысл ясен?
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<a target="_blank" class="link" href="http://www.ya.ru">LINK</a>
	<script>
		var links = ['http://ya.ru', 'http://javascript.ru','http://google.com','http://github.com'];
		document.querySelector('.link').onclick = function() {
			if (links.length > 0) {
				this.href = links.shift();
			}
		}
	</script>
</body>
</html>

Последний раз редактировалось Lemme, 17.09.2015 в 23:24.
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2015, 00:12
Аспирант
Отправить личное сообщение для zerofx Посмотреть профиль Найти все сообщения от zerofx
 
Регистрация: 08.11.2013
Сообщений: 78

так себе +-


var links = ['http://ya.ru', 'http://javascript.ru','http://google.com','http://github.com'];
- создаем массив

if (links.length > 0) {
                this.href = links.shift();
            }
- вот здесь не очень понимаю

+ должно быть бесконечный перебор ссылок, а в Вашем примере он на github заканчивается
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2015, 00:34
Аспирант
Посмотреть профиль Найти все сообщения от newtimebigtime
 
Регистрация: 16.09.2015
Сообщений: 34

zerofx,
что то вроде
index=-1// глобальная
if(index>links.length) index=-1; this.href=links[index++]

Последний раз редактировалось newtimebigtime, 18.09.2015 в 00:38.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2015, 00:40
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

// массив ссылок.
var links = [
    'http://ya.ru',
    'http://javascript.ru',
    'http://google.com',
    'http://github.com'
];

document.querySelector('.link').onclick = function() {
    // получаем позицию ссылки из аттрибута data-linkpos и приводим к типу number
    var linkPos = +this.getAttribute('data-linkpos');
    
    // если это последняя ссылка в массиве, то сбрасываем позицию.
	if (linkPos >= links.length) {
    	linkPos = 0;
    }
    // меняем ссылку
    this.href = links[linkPos];
    // увеличиваем значение data-linkspos на linkPos + 1
    this.setAttribute('data-linkpos', linkPos + 1);
}

Последний раз редактировалось Lemme, 18.09.2015 в 01:06.
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2015, 00:56
Аспирант
Посмотреть профиль Найти все сообщения от newtimebigtime
 
Регистрация: 16.09.2015
Сообщений: 34

Сообщение от Lemme
// массив ссылок.
вынеси его за пределы ф-ции, иначе он при каждом вызове будет заново создаваться.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2015, 01:04
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

newtimebigtime, да, я чет во втором примере затупил. =)
поправил.

Последний раз редактировалось Lemme, 18.09.2015 в 01:07.
Ответить с цитированием
  #8 (permalink)  
Старый 18.09.2015, 09:30
Аспирант
Отправить личное сообщение для zerofx Посмотреть профиль Найти все сообщения от zerofx
 
Регистрация: 08.11.2013
Сообщений: 78

Lemme - да разобрался, СПС!!!

и мне все равно интересно - уже просто хочу понять - мой вариант - имеет право на жизнь? Если так - то где там ошибка? почему он не работает
Ответить с цитированием
  #9 (permalink)  
Старый 18.09.2015, 10:06
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
почему он не работает
в функции link_sort $(this) === window, уберите функцию и поймете.
Цитата:
мой вариант - имеет право на жизнь
если вам нравится на каждую ссылку писать условие, то да, имеет.
Ответить с цитированием
  #10 (permalink)  
Старый 18.09.2015, 10:44
Аспирант
Отправить личное сообщение для zerofx Посмотреть профиль Найти все сообщения от zerofx
 
Регистрация: 08.11.2013
Сообщений: 78

Сообщение от Lemme Посмотреть сообщение
в функции link_sort $(this) === window, уберите функцию и поймете.

если вам нравится на каждую ссылку писать условие, то да, имеет.


а тут я Вас вообще не понял ...

для меня Важно зромуты где здесь ошибка ... а не какой вариант лучше ...

да Ваш вариант круче ... я не спорю - но все же мне интересно заставить свой вариант работать =)


объясните что вы имеете в виду - link_sort $(this) === window
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить innerHTML при клике prope Общие вопросы Javascript 3 10.01.2014 17:13
Изменение размера элемента при клике Derekovich Элементы интерфейса 25 05.12.2013 20:45
Смена фона картинки при клике на иконку Letto Элементы интерфейса 2 08.11.2013 18:31
Интерактивная карта мира на jQuery - замена события при клике jacob0013 jQuery 2 28.05.2013 13:30
Изменить цвет при клике AndreyS jQuery 3 07.10.2012 16:27