2017-08-25 32 views
1

我有這個正常的鏈接就可以了每次點擊改變href屬性值從一個數組

<a href='#'>Click Me</a> 

和我有類似如下

$values = ['a', 'b', 'c', 'd']; 
$first = current($values); 

數組我想要做的是即在每個點擊鏈路上,該屬性的值改變到下一個陣列值從a到b到C到d,然後到一個再次如果它是結束, 取決於get請求$_GET['order']; 我怎樣才能做到這一點使用JQuery的PHP

我所試圖做的是

$current = $_GET['order']; 
if(isset($current)){ 
    if(in_array($current, $values)){ 
     $link = next($values); 
     echo "<a href='$link'>Click Me</a>"; 
    } else { 
     echo "<a href='$first'>Click Me</a>"; 
    } 
} else { 
    echo "<a href='$first'>Click Me</a>"; 
} 

如果$_GET['order'] == 'a';$link將改變爲<a href='b'>Click Me</a>和和。

+2

如果你點擊'a',那麼肯定你不在同一頁面,所以改變'href'是沒有意義的...?看到更多的代碼會對你有所幫助 –

+0

@RoryMcCrossan添加了我的代碼。 – AXAI

+0

您需要一個名爲'order'的輸入框來提交這些值 – adeneo

回答

0

您可以使用jQuery這個(閱讀說明註釋):

var values = ['a', 'b', 'c', 'd', 'e']; 

//We need to get the value of our $_GET['order'], let's parse our current location url 
var get_vars = []; 
location.search.replace('?', '').split('&').forEach(function(pair){ 
    pair_arr = pair.split("=", 2); 
    get_vars[pair_arr[0]] = pair_arr[1]; 
}); 

//Now let's init the curent index equal to our $_GET['order'] (TODO: error checking/handleing) 
var cur_index = values.indexOf(get_vars['order']); 

//Now let's init the link value 
$('#link').attr('href', '?order='+values[cur_index]); 


$('#link').on('click', function(){ 
    if(cur_index + 1 >= values.length){ 
     cur_index = 0; 
    }else{ 
     cur_index++; 
    } 
    $(this).attr('href', '?order='+values[cur_index]); 
}); 

而在HTML中,你當然需要給你的鏈接的ID:

<a href='#' id="link">Click Me</a> 

而且在PHP ..或在你的網址...你將需要提供一個GET變種:

<?php 
/* TEST */ 
$_GET['order'] = 'a'; 
?> 

注意:這個鏈接永遠不會真的帶你任何地方......它只會更新GET變量......它將不得不被修改,以便實際做更有用的事情。