Я работаю над бесплатной программой лагеря zipline «Создай машину случайных котировок». Я пробовал искать и просматривать разные учебники, но не могу отобразить свою случайную цитату. Я думаю, что я близко, но после нескольких часов попыток, я решил спросить экспертов! Я знаю, что onClick работает, потому что, если я добавлю newQuote в кавычки, он покажет, где я хочу, но, похоже, я не вызываю переменную правильно.

$(document).ready(function() {
generator();

function generator() {
var quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];

var newQuote = [Math.floor(Math.random() * quotes.length)]
}
$(".btn").on("click", function() {
$('#output').html(newQuote);
});
});
0
Brett Wray 19 Дек 2015 в 10:02

7 ответов

Лучший ответ
$(document).ready(function() {

   function generator() {
        var quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];
        return quotes[Math.floor(Math.random() * quotes.length)];
   }
  
   $(".btn").on("click", function() {
        $('#output').html(generator());
   });
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="btn">btn</button>
<span id="output"></span>
4
Cattla 19 Дек 2015 в 07:37

Вам нужно инициализировать, а затем установить значения.

$(document).ready(function() {
  // Initialize then set variables
  var quotes;
  var newQuote;
  generator();

  // Sets the variables
  function generator() {
    quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];

    // Generate new random index to select
    newQuote = Math.floor(Math.random() * quotes.length);
  }

  // Each time the button with class 'btn' is clicked, generate a new quote
  // and change the output HTML
  $(".btn").on("click", function() {

    // Change quote values
    generator();

    // Output changes
    $('#output').html(quotes[newQuote]);
  });
});
<!DOCTYPE html>
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="script.js"></script>
</head>

<body>
  <button class="btn">button</button>
  <div id="output"></div>

</body>

</html>
1
Mike 19 Дек 2015 в 07:25

Попробуй это:

$(document).ready(function() {
    var quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];

    $(".btn").on("click", function() {
        $('#output').html(quotes[Math.floor(Math.random() * quotes.length)]);
    });
});

Причина, по которой я удалил функцию генератора, заключается в том, что если вы сохраните это, тогда кавычки var будут локальными для этой функции. В этом нет необходимости.

Последний ключ - генерировать случайный индекс при каждом нажатии кнопки.

0
Will 19 Дек 2015 в 07:18

Пожалуйста, найдите рабочий пример здесь

https://jsfiddle.net/dcxbuaev/

Вы неправильно использовали переменную newQuote

0
AbdulRahman Ansari 19 Дек 2015 в 07:19

Попробуй это

var newQuote = quotes[Math.floor(Math.random() * quotes.length)]

Вы не видите результат, потому что новая цитата состоит из индекса случайной цитаты

0
mef_ 19 Дек 2015 в 07:12

Я думаю, что первая проблема заключается в том, что вы пропустили имя массива ...

var newQuote = quotes[Math.floor(Math.random() * quotes.length)];

Во-вторых, функция на самом деле не кажется необходимой, и вы должны либо возвращать значение, например

return quotes[Math.floor(Math.random() * quotes.length)];

Или просто не использовать его вообще ...

$(document).ready(function() {

  var quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];   

  $(".btn").on("click", function() {
    var newQuote = quotes[Math.floor(Math.random() * quotes.length)];
    $('#output').html(newQuote);
  });
});

РЕДАКТИРОВАТЬ: Вот пример с функцией, возвращающей значение.

$(document).ready(function() {

  function generateQuote() {
    var quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];
    return quotes[Math.floor(Math.random() * quotes.length)];
  }

  $(".btn").on("click", function() {
    $('#output').html(generateQuote());
  });
});
0
Quantumplate 19 Дек 2015 в 07:26
$(document).ready(function() {
generator();

function generator() {
 var quotes = ["Never make permanent decisions", "Knowledge is having the right answer. Intelligence is asking the right question", "I am Strong, Because i’ve been weak", "Scientists have discovered a food that diminishes a woman’s sex drive by 90%…", "I may look calm, but in my head I’ve killed  you 3 times"];

var newQuote = [Math.floor(Math.random() * quotes.length)]
}
$(".btn").on("click", function() {
$('#output').html(newQuote.toString());
});
});
-1
Dilip Oganiya 19 Дек 2015 в 07:09