Генератор случайных лозунгов с использованием переключателя javascript

У меня мало проблем. Я изучаю javascript, и я хотел создать генератор случайных лозунгов для моего сайта с использованием switch.

Поэтому я создал этот html-код

<body onload="rndqu()">
    <div id="head"> <a href="index.html">Mira's place<a><br>
            <h2>&#8220;<span id="quote"></span>&#8221;</h2>
    </div>
</body>

и использовал этот Javascript

var qu;
var slogan;
function rndqu(n){
    var random = function(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    };  
    qu = random(1, 3);
}
switch(qu){
    case 1:
        slogan = "Here is the 1";
        break;
    case 2:
        slogan = "Here is the 2";
        break;
    case 3:
        slogan = "Woah";
        break;
    default:
        slogan = "Really?";
}
document.getElementById("quote").innerHTML = slogan;

Я не понимаю, почему это не работает. Кто-нибудь может мне помочь? Спасибо! И вот jsfiddle этого: http://jsfiddle.net/NX3cz/

javascript,

0

Ответов: 3


2 принят

Вы оставили часть кода вне rndqu()функции. Я разветвил и исправил вашу скрипку здесь: http://jsfiddle.net/BwJ7s/

Вот скорректированный код JS:

var qu;
var slogan;
function rndqu(n)
{
    var random = function(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    };  
    qu = random(1, 3);

    switch(qu){
        case 1:
            slogan = "Here is the 1";
            break;
        case 2:
            slogan = "Here is the 2";
            break;
        case 3:
            slogan = "Woah";
            break;
        default:
            slogan = "Really?";
    }
    document.getElementById("quote").innerHTML = slogan;
}

4

Для этого я бы использовал массив вместо оператора switch, чтобы сделать его более гибким. Например:

var quotesList = ["I'm a great guy!", "Not even kidding.", "Just incredible."];

var randQuote = function(quotes) {
    var choice = Math.floor(Math.random() * quotes.length);
    return quotes[choice];
}

document.getElementById("quote").innerHTML = randQuote(quotesList);

Таким образом, размер массива котировок может быть изменен без изменения какого-либо кода.

Демо: jsfiddle


0

Исправлено здесь http://jsfiddle.net/NX3cz/13/

var qu;
var slogan;
function rndqu(min, max){

    qu =  Math.floor(Math.random() * (max - min + 1)) + min;

    switch(qu){
        case 1:
            slogan = "Here is the 1";
            break;
        case 2:
            slogan = "Here is the 2";
            break;
        case 3:
            slogan = "Woah";
            break;
        default:
            slogan = "Really?";
    }
    document.getElementById("quote").innerHTML = slogan;
}

rndqu(1, 3);

Ваш код был слишком сложным, также обратите внимание, в jsfiddle не добавляется body onload="()"функция. Jsfiddle делает это для вас.

Если вы хотите сделать это onbodyloadна реальной веб-странице, оберните свой код следующим образом:

window.onload = (function(){
    //your code goes here
})

или включить ваш скрипт в нижней части html-файла.

По возможности наилучшая практика заключается в том, чтобы избежать встроенного javascript в вашем html.

JavaScript,
Похожие вопросы