2016-04-06 17 views
0

私は2つのスクリプトを持っています。チェックボックスの値を取得するものと、<a>タグを追加するもの。両方とも別々に動作しますが、私は 'str'という値をURL追加スクリプトに入れる必要があり、動作させることができません。URLのチェックボックスの値を取得する

のように私のgetチェックボックスが見えます:私は私のURLの 'STR' の値を配置しようとしています

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

:URLを追加する私の2番目のスクリプトは次のようである

<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> 

。助けてもらえますか?

window.history.replaceState(); 

これらは、私が使用するいくつかのヘルパー関数です:strをされるかもしれ

+0

Meabyあなたは '$( '。nextquestion')を実行する必要があります。click(function(){/ * newComputedUrl */window.location = newCを計算するomputedUrl;}); '$( '。nextquestion')。attr( 'href'、...'。 –

答えて

0

は、2番目のスクリプトの関数内でアクセス可能ではない、あなたは

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

使用してみてください、それがグローバル変数にする必要がある場合がありますこれは:

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); 
    } 

};