2016-12-28 76 views
0

首先,这里是一个small project我在每次按下New Fact按钮时会抛出一个新事实。源代码可用here。然后我做了一个推特按钮来发送推文的报价。在JavaScript中访问变量从一个功能到另一个功能

正如你可以在main.js文件中看到的,有一个变量叫做引号,它是一个由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"); 
     }); 
    }); 

每当用户点击分享Tweet按钮,它开辟了每个i多个Twitter标签。我只想为当前报价打开选项卡。我试图保持两个功能分开,而不是嵌套,但然后quotes[i]变得无法访问导致undefined

+0

具体是什么问题,什么是你的问题? – charlietfl

+0

@charlietfl我只想要打开一个tweet标签,其中包含当前事实,只要用户按下tweet按钮。 – Hyperbola

回答

1

既然你存储你是URI编码的.lead元素中的文本,这里有一个方法可以单独的功能:

$(".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

我也试过,但那会给我一个报价,最初的一个报价。它不会更新,因为我迭代。 – Hyperbola

+0

@Hyperbola你确定吗?它在这里写的方式是,每次单击“.tweeter”时它将获得'.lead'元素的当前文本。 –

+1

谢谢,它现在正在工作。我曾尝试过同样的事情,但不知道为什么它没有成功。再次感谢! – Hyperbola