1

クリックするとJavaScript関数をアクティブにするためのボタンが2つありますが、機能していないようです。ただし、JavaScript関数のコンテンツを関数の外に移動すると、正しく機能します。したがって、ボタンは間違いなく問題です。

JavaScript:

$(document).ready(function() 
{

function recordjourney() 
{
var journey = JSON.parse(localStorage.getItem('journey'))||[];
journey.push(location.protocol + '//' + location.host + location.pathname);

localStorage.setItem('journey', JSON.stringify(journey));

document.write(journey);
}


function resetjourney() 
{
localStorage.clear()
}

});

HTML:

<p><button name="record" type="button" onclick="recordjourney()">Record Journey</button</p>

<p><button name="reset" type="button" onclick="resetjourney()">Reset Journey</button></p>
4

3 に答える 3

3

ボタンは問題ではありません。呼び出している関数がボタンと同じレベルに存在しないため、スコープの問題があります。

次のように ready 呼び出し内のボタンにバインドすることで、それを修正してコードを少しきれいにすることができます

$(document).ready(function() {
   $('[name="record"]').click(recordjourney);
   $('[name="reset"]').click(resetjourney);    

});

function recordjourney() {
    var journey = JSON.parse(localStorage.getItem('journey')) || [];
    journey.push(location.protocol + '//' + location.host + location.pathname);

    localStorage.setItem('journey', JSON.stringify(journey));

    document.write(journey);
}


function resetjourney() {
    localStorage.clear()
}​

<p><button name="record" type="button">Record Journey</button</p>

<p><button name="reset" type="button">Reset Journey</button></p>​

ここでフィドル - http://jsfiddle.net/7eYNn/

于 2012-04-15T14:14:03.947 に答える
0

から関数を初期化します$(document).ready()

$(document).ready(function() 
{

});


function resetjourney() 
{
   localStorage.clear()
}


function recordjourney() 
{
  var journey = JSON.parse(localStorage.getItem('journey'))||[];
  journey.push(location.protocol + '//' + location.host + location.pathname);

  localStorage.setItem('journey', JSON.stringify(journey));

  document.write(journey);
}
于 2012-04-15T14:11:47.107 に答える
0

はい、そのとおり。関数内で関数を定義すると、その関数に対してプライベートになります。グローバル変数を作成する必要があります

var recordjourney;
$(document).ready(function(){
 ...
recordjourney = {
  var journey =
 ... etc

もちろん、あなたがJQueryを使用していることを考えると、私はそうします

$(document).ready(function(){
 ...
    $( 'button[name=record]' ).bind( function(){ 
       //put your function here 
    })

ボタンタグから醜い onclick="recordjourney を削除します。

于 2012-04-15T14:13:49.650 に答える