2016-05-15 8 views
-1

私の目標は、クリックするとランダムな引用符が表示されるようにすることです。私はすでに引用符を格納するJSONオブジェクトを作成し、オブジェクトから引用符をランダムに選択して出力する関数を作成しました。ボタン上にランダムな文字列を表示するクリック

HTMLスニペット - ボタン(ブートストラップなど)

<div class="row" id="quotebox"> 
    <div class="text-center"> 
     <button class="btn btn-default" onclick ="randomQuote()"type="submit">Hit Me Baby One More Time</button> 
    </div> 
</div> 

JSONオブジェクトは、5重引用符

を格納
var quotesList = [{ 
    quote: "Planting popcorn does not produce more popcorn", 
    person: "Farmer Ted" 
}, { 
    quote: "White whale, bad whale", 
    person: "Confucious (Moby Dick)" 
}, { 
    quote: "Use the strobe function to disorientate your attacker", 
    person: "Flashlight" 
}, { 
    quote: "Apply liberally to your erogenous zones", 
    person: "Spice Bomb" 
}, { 
    quote: "Help me, I'm bleaching", 
    person: "The Great Barrier Reef" 
}]; 

最後に、ランダムな見積もりを印刷する機能は、(のonClickによってトリガ)

function randomQuote() { 
    var listLength = Object.keys(quoteList).length; 
    var randVal = Math.floor(Math.random() * listLength); 
    document.write(quotesList[randVal]); 
} 

上記の2つのスニペットは、私のJavaScriptコード全体を構成しています。

+1

最高のタイトルです。真剣にノイズを避けてはいけません。テキストやタイトルでは、読者に利益をもたらしないものがあります。 – HopefullyHelpful

+0

'var listLength = quoteList.length;'は長さのために必要なものです。そして、複数回クリックできるようにするには、 'document.write()'を使うことはできません。 – Pointy

+0

@HopefullyHelpfulはい。さらに、このタイトルはおそらく 'ランダムコードジェネレーター'ではなく、 'ランダムクォートジェネレーター'と言っていたのでしょう。疑問の質問者がどれくらいの注意を払っているかを示します。単純なコーディングに問題があるのは不思議ではありません。 –

答えて

0

ここに固定されたJSがあります。主な問題は、Object.keys(quoteList).lengthを使用して、単純な配列であっても、長さがquoteListになっていたことでした。さらに、あなたはdocument.writeを使用していましたが、これは一般に悪い習慣と考えられています。引用符と著者の文字列にdocument.getElementById('quotebox').innerHTMLを設定して置き換えました。最後に、quoteオブジェクトの個々の属性にアクセスし、quoteオブジェクトから文字列を作成するのではなく、quoteオブジェクト全体を画面に書き込んでいました。

var $quoteBox = document.getElementById('quotebox'); 

var quotesList = [ 
    { 
    quote: "Planting popcorn does not produce more popcorn", 
    person: "Farmer Ted" 
    }, { 
    quote: "White whale, bad whale", 
    person: "Confucious (Moby Dick)" 
    }, { 
    quote: "Use the strobe function to disorientate your attacker", 
    person: "Flashlight" 
    }, { 
    quote: "Apply liberally to your erogenous zones", 
    person: "Spice Bomb" 
    }, { 
    quote: "Help me, I'm bleaching", 
    person: "The Great Barrier Reef" 
    } 
]; 

function randomQuote() { 
    var randIdx = Math.floor(Math.random() * quotesList.length); 
    var randQuote = quotesList[randIdx]; 
    $quoteBox.innerHTML = "\"" + randQuote.quote + "\" - " + randQuote.person; 
} 
+0

私の答えに何が間違っているのかを教えて下さっていますか? – pzp

+0

それを否定的な側から取り戻すためにUpvoted! :-) – Ville

+0

@pzp、あなたの助けと説明をありがとう。私は最初のクリックの後に見積もりがボタンに取って代わられないようにHTMLを微調整しなければならなかったが、今は私が望むように動いている。私はdocument.getElementByIdとinnerHTMLでもっと読む必要があります – Stomper

関連する問題