2016-12-28 14 views
0

開始するには、small projectを入力して、ユーザがNew Factボタンを押すたびに新しい事実をスローします。ソースコードはhereです。それから、Twitterのボタンをつけてそのを引用しました。JavaScript内のある関数から別の関数への変数へのアクセス

main.jsファイルにあるように、quotesという変数があります。この変数は、40個の引用符の配列です(以下のコードで抜粋)。

// var quotes defined above, an array of 40 quotes 

$(".quoter").click(function() { 

     // To generate a random number 
     function randomRange(myMin, myMax) { 
      return Math.floor(Math.random() * (myMax - myMin + 1) + myMin); 
     } 

     i = randomRange(0, 40); 
     //Using the random number generated above to fetch a quote 
     $(".lead").text(quotes[i]); 

     var uriLink = encodeURIComponent(quotes[i]); 

     $(".tweeter").click(function(){ 
      window.open("https://twitter.com/intent/tweet?text="+uriLink+, "_blank"); 
     }); 
    }); 

ユーザーはツイートのボタンをクリックするたびに、それは各iのために複数のTwitterのタブを開きます。私は現在の見積もりの​​ためだけにタブを開くようにします。私は2つの機能を別々にしておき、入れ子にすることはしませんでしたが、quotes[i]はアクセスできないのでundefinedになります。

+0

特定の問題とどのようなご質問があるが、何ですか? – charlietfl

+0

@charlietflユーザーがツイートボタンを押すたびに現在のファクトを含むツイートタブを1つ開きたいだけです。 – Hyperbola

答えて

1

あなたが.lead要素にURIエンコードしているテキストを格納しているので、ここであなたが機能を分離することができます一つの方法だ:

$(".quoter").click(function() { 
    function randomRange(myMin, myMax) { 
    return Math.floor(Math.random() * (myMax - myMin + 1) + myMin); 
    } 

    i = randomRange(0, 40); 

    $(".lead").text(quotes[i]); 
}); 

$(".tweeter").click(function() { 
    var uriLink = encodeURIComponent($(".lead").text()); 
    window.open("https://twitter.com/intent/tweet?text=" + uriLink + , "_blank"); 
}); 
+0

私もそれを試しましたが、それは私にちょうど1つの引用、最初のものを与えるでしょう。私は反復するので更新されません。 – Hyperbola

+0

@Hyperbola本当ですか?ここに書かれているように、 '.tweeter'がクリックされるたびに' .lead'要素の現在のテキストが取得されます。 –

+1

ありがとう、それは今働いています。私は同じことを試みたが、なぜそれがうまくいかなかったのか分からない。再度、感謝します! – Hyperbola

関連する問題