2016-04-06 45 views
0

我有兩個腳本。一個獲得複選框值,另一個將追加我的<a>標記。兩者都單獨工作,但我需要將'str'的值放在我的url追加腳本中,而我似乎無法使其工作。獲取URL的追加框值附加

我獲取複選框的樣子:

<script> 
var checked, checkedValues = new Array(); 
$(document).on('change', 'input[type=checkbox]', function(e) { 

checked = $('input[type=checkbox]:checked'); 
checkedValues = checked.map(function(i) { return $(this).val() }).get(); 

$('.aaa').html(checked.length + ' are checked'); 
if (checked.length) { 
    var str = checkedValues.join(); 
}); 
</script> 

我的第二個腳本追加的URL是這樣的:

<script> 
$('.nextquestion').attr('href', function() { 
this.href = this.href + '&answers=+str+'; 
}); 
</script> 

我試圖把 'STR' 的價值在我的網址。有人可以幫忙嗎?

+0

meaby你應該做'$('。nextquestion')。click(function(){/ * compute newComputedUrl */window.location = newC omputedUrl;});'而不是'$('。nextquestion')。attr('href',...'。 –

回答

0

可能是str是不是第二個腳本函數內部訪問,你可能必須使它全局變量

var str 
if (checked.length) { 
    str = checkedValues.join(); 
}); 

$('.nextquestion').attr('href', function() { 
    //here first check if str has value 
    this.href = this.href + '&answers=+str+'; 
}); 
0

嘗試使用:

window.history.replaceState(); 

這些都是我用一些輔助功能這個:

var addUrlParam = function (param, value) { 

    var originalUrlArray = window.location.href.replace(/#/g, "").replace(/!/g, "").split("?"); 

    var query = originalUrlArray[1] || false; 

    var vars = query ? query.split("&").clean("") : []; 

    vars.push(param + "=" + value); 

    var newQueryString = vars.join("&"); 

    var newUrl = originalUrlArray[0] + "?" + newQueryString; 

    window.history.replaceState(null, null, newUrl); 
}; 

var updateUrlParam = function (paramToUpdate, newValue) { 

    var originalUrlArray = window.location.href.replace(/#/g, "").replace(/!/g, "").split("?"); 

    var query = originalUrlArray[1]; 

    var vars = query.split("&"); 

    var newVars = vars.slice(); 

    var matches = vars.searchFor(paramToUpdate); 

    if (matches) { 

     for (var i = 0; i < matches.length; i++) { 

      var pair = vars[matches[i]].split("="); 

      if (pair[0] === paramToUpdate) { 

       pair[1] = newValue; 

       newVars[matches[i]] = pair.join("="); 
      } 

     } 

     var newUrl = originalUrlArray[0] + "?" + newVars.join("&"); 

     window.history.replaceState(null, null, newUrl); 
    } 

};