2013-04-17 6 views
0

У меня есть страница с тремя хэштегом URLs:Перенаправить, когда все ссылки были нажаты?

<a href="#Link1">Some Text 1</a> 
<a href="#Link2">Some Text 2</a> 
<a href="#Link3">Some Text 3</a> 

После того, как пользователь нажал все три мне нужно перенаправить их на другой URL.

У кого-нибудь есть пример или знаете способ, я могу это сделать?

+0

После того как пользователь нажмет на третью ссылку, вы не ждать его/ее, чтобы прочитать соответствующий текст? – Christophe

ответ

0

Попробуйте с этим:

window.onload = function() { 
    var anchors, clicked_count, clicked, i, cur_anchor, my_anchor_id; 

    anchors = document.getElementsByTagName("a"); 
    clicked_count = 0; 
    clicked = {}; 

    for (i = 0; i < anchors.length; i++) { 
     cur_anchor = anchors[i]; 
     cur_anchor.setAttribute("data-anchor-id", i); 
     cur_anchor.onclick = function (e) { 
      e = e || window.event; 
      e.preventDefault(); 

      my_anchor_id = this.getAttribute("data-anchor-id"); 
      if (!(my_anchor_id in clicked)) { 
       clicked[my_anchor_id] = null; 
       if (++clicked_count === anchors.length) { 
        console.log("WOULD BE REDIRECTING"); 
        //window.location.href = "NEW URL"; 
       } 
      } 
     }; 
    } 
}; 

DEMO:http://jsfiddle.net/hCRtD/1/

Чтобы доказать демо-работу, нажмите на некоторых якорях несколько раз, прежде чем нажать на последнем необходимо. Он будет не просто завершиться после трех щелчков мыши (мое исходное решение было ошибочным таким образом), но будет ждать, пока каждый из них будет нажат хотя бы один раз.

Он устанавливает специальный атрибут на всех тегах <a>, однозначно идентифицируя их. Очевидно, можно использовать id, но вы его не включили, и это достаточно легко сделать.

Затем, когда щелчок привязан (только в первый раз), его уникальный идентификатор добавляется в коллекцию (clicked).

Когда счетчик (clicked_count), который увеличивается каждый раз при первом щелчке якоря, достигает общего количества якорей, найденных в первую очередь, затем все завершено.

+0

Ты, сэр, гений! Ваш код помог мне до конца! Спасибо большое! –

+0

@SarahChampion Нет проблем! Дайте мне знать, если вам нужна дополнительная помощь! – Ian

0

Добавить HTML-класс:

<a href="#Link1" class="redirect">Some Text 1</a> 
<a href="#Link2" class="redirect">Some Text 2</a> 
<a href="#Link3" class="redirect">Some Text 3</a> 

И попробуйте JavaScript:

function catchAnchors(){ 
    var links = document.getElementsByClassName("redirect");//get your links 
    for(var i=links.length-1;i>=0;i--){ 
    if(!links[i].wasClick)return;//if never clicked return; 
    } 
    location.href = "your url";//redirect 
} 

var links = document.getElementsByClassName("redirect");//get your links 
for(var i=links.length-1;i>=0;i--){ 
    links[i].onclick = function(){ 
    this.wasClick = true;//set mark onclick event 
    catchAnchors();//check links 
    } 
}