期待随机选择,连接存储在变量中的文本串

时间:2016-09-22 23:24:04

标签: javascript jquery string random concatenation

问题

在我的scripts.js中,变量var fullURL =未在我已存储的teaser1teaser2teaser3中发送实际文本。在变量中。当人们点击fa-twitter

时,我基本上想要随机选择三个戏弄中的一个

scripts.js中

function shareTeam(){
    $(".fa-twitter").click(function(){

         // Grabs the names of all the players in the span
         // Sets a variable marking the indexOf each of the names
         // If the index doesn't find a space, it returns -1, which returns the full name
         // Otherwise it will return only what follows the space
         var lastNames = $("li span").map(function() {
           var name = $(this).text();
           var index = name.indexOf(" ");
           return index == -1 ? name : name.substring(index + 1);
         }).get();
         console.log(lastNames);

        var regularNames = lastNames.slice(0, 3); // Same as below, but no shuffling

        regularName1 = regularNames[0]; // Forward
        regularName2 = regularNames[1]; // Forward
        regularName3 = regularNames[2]; // Defenseman

        // Find me a random number between 1 and 3
        // Where 1 is the start number and 3 is the number of possible results
        var teaser = "teaser";
        var rand = Math.floor(Math.random() * 3) + 1;
        console.log(rand);

        // Concatenate the two strings together
        teaseRand = teaser.concat(rand);

        // These are the components that make up that fullURL
        var baseURI = "https://twitter.com/intent/tweet?url=";
        var twitterUsername = "stltoday";
        var interactiveURL = "http://graphics.########.com/STLblues";

        // Randomly generate one of three teasers
        var teaser1 = regularName3 + " to " + regularName2 + " back to " + regularName1 + " — GOAL! Create your own all-team #STLBlues team: ";
        var teaser2 = "I picked my #STLBlues dream team. See which players I've chosen and build your own: ";
        var teaser3 = "My #STLBlues team will skate circles around yours! Pick your team: ";

        // This is the full url that will be switched in and out
        // var fullURL = baseURI+interactiveURL+"&via="+twitterUsername+"&text="+teaseRand;
        var fullURL = baseURI+interactiveURL+"&via="+twitterUsername+"&text="+teaseRand;

        // It needs to be encoded properly as well
        var encodedURL = encodeURIComponent(fullURL)
        console.log(fullURL);
        console.log(encodedURL);



        // Change the href to the link every time the Twitter button is clicked
        var changeLink = $("link--twitter").attr("href", encodedURL);

        // if (lastNames.length === 6) {

        // } else {
        //     // Generic teaser
        //     var teaser4 = "Pick your #STLBlues dream team from 50 of the best @StLouisBlues to hit the ice: " + interactiveURL + " (via @stltoday)";
        // }
    });
}

1 个答案:

答案 0 :(得分:1)

不幸的是,这个teaseRand值将是“teaser1”或“teaser2”或“teaser3”,而不是变量teaser1或teaser2或teaser3的值,如果这有意义的话。根据您的要求,您需要将teasers添加到阵列中,然后从中随机访问。对于例如如果数组被称为预告片,那么你将需要做预告片[rand],显然你需要像现在一样从0到2而不是1到3计算兰特。

请检查我在此处创建的codepen

http://codepen.io/19sthil80/pen/VKPqkR?editors=1111

$(document).ready(function(){
var teasers = [];
     // Grabs the names of all the players in the span
     // Sets a variable marking the indexOf each of the names
     // If the index doesn't find a space, it returns -1, which returns the full name
     // Otherwise it will return only what follows the space
     var lastNames = $("li span").map(function() {
       var name = $(this).text();
       var index = name.indexOf(" ");
       return index == -1 ? name : name.substring(index + 1);
     }).get();
     console.log(lastNames);

    var regularNames = lastNames.slice(0, 3); // Same as below, but no shuffling

    regularName1 = regularNames[0]; // Forward
    regularName2 = regularNames[1]; // Forward
    regularName3 = regularNames[2]; // Defenseman

    // Find me a random number between 1 and 3
    // Where 1 is the start number and 3 is the number of possible results
    var teaser = "teaser";
    var rand = Math.floor(Math.random() * 3);
    console.log(rand);

    // Concatenate the two strings together
    teaseRand = teaser.concat(rand);

    // These are the components that make up that fullURL
    var baseURI = "https://twitter.com/intent/tweet?url=";
    var twitterUsername = "stltoday";
    var interactiveURL = "http://graphics.########.com/STLblues";

    // Randomly generate one of three teasers
    var teaser1 = regularName3 + " to " + regularName2 + " back to " + regularName1 + " — GOAL! Create your own all-team #STLBlues team: ";
    var teaser2 = "I picked my #STLBlues dream team. See which players I've chosen and build your own: ";
    var teaser3 = "My #STLBlues team will skate circles around yours! Pick your team: ";
teasers.push(teaser1);teasers.push(teaser2);teasers.push(teaser3);
    // This is the full url that will be switched in and out
    // var fullURL = baseURI+interactiveURL+"&via="+twitterUsername+"&text="+teaseRand;
    var fullURL = baseURI+interactiveURL+"&via="+twitterUsername+"&text="+teasers[rand];

    // It needs to be encoded properly as well
    var encodedURL = encodeURIComponent(fullURL)
    console.log(fullURL);
    console.log(encodedURL);



    // Change the href to the link every time the Twitter button is clicked
    var changeLink = $("link--twitter").attr("href", encodedURL);

    // if (lastNames.length === 6) {

    // } else {
    //     // Generic teaser
    //     var teaser4 = "Pick your #STLBlues dream team from 50 of the best @StLouisBlues to hit the ice: " + interactiveURL + " (via @stltoday)";
    // }
});