замена линков при клике
привет всем - поставили мне одну задачу ...
есть две ссылки- первая уже прописана в 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) // если не совпадают то ставим это в хреф }; } }); |
смысл ясен?
<!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> |
так себе +-
var links = ['http://ya.ru', 'http://javascript.ru','http://google.com','http://github.com'];- создаем массив if (links.length > 0) { this.href = links.shift(); }- вот здесь не очень понимаю + должно быть бесконечный перебор ссылок, а в Вашем примере он на github заканчивается |
zerofx,
что то вроде index=-1// глобальная if(index>links.length) index=-1; this.href=links[index++] |
// массив ссылок. 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); } |
Цитата:
|
newtimebigtime, да, я чет во втором примере затупил. =)
поправил. |
Lemme - да разобрался, СПС!!!
и мне все равно интересно - уже просто хочу понять - мой вариант - имеет право на жизнь? Если так - то где там ошибка? почему он не работает |
Цитата:
Цитата:
|
Цитата:
а тут я Вас вообще не понял ... для меня Важно зромуты где здесь ошибка ... а не какой вариант лучше ... да Ваш вариант круче ... я не спорю - но все же мне интересно заставить свой вариант работать =) объясните что вы имеете в виду - link_sort $(this) === window |
Сейчас я сделал, тоже самое что и вы. Теперь посмотрите на что ссылается this, т.е сначала на кнопку, а внутри функции myFunction - уже на объект window.
Если действительно интересно, то http://learn.javascript.ru/object-methods <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button>Click</button> <script> document.querySelector('button').onclick = function() { // this ссылается на кнопку alert(this); myFunction(); function myFunction() { // this ссылается на window alert(this); } } </script> </body> </html> Насчет лучше/хуже - я лишь ответил на ваш вопрос. |
Часовой пояс GMT +3, время: 02:42. |