2016-05-29 5 views
0

Я попытался несколько способов сделать эту распечатку случайным образом внутри абзаца html, но он работает неправильно.
Может кто-нибудь, пожалуйста, помогите мне исправить проблему?Не удается получить Javascript для html правильно

var randomPicker = Math.floor(Math.random() * 5); 
var quotesArray = []; 

function Quotes(quote, author) { 
    this.quote = quote; 
    this.author = author; 
} 

quotesArray[0] = new Quotes("Great minds discuss ideas; average minds discuss events; small minds discuss people.", "Eleanor Roosevelt"); 
quotesArray[1] = new Quotes("To be yourself in a world that is constantly trying to make you something else is the greatest accomplishment.", "Ralph Waldo Emerson"); 
quotesArray[2] = new Quotes("Great things are done by a series of small things brought together.", "Vincent Van Gogh"); 
quotesArray[3] = new Quotes("Some are born great, some achieve greatness, and some have greatness thrust upon them.", "William Shakespeare"); 
quotesArray[4] = new Quotes("A tiger does not shout its tigritude, it acts.", "Wole Soyinka"); 
quotesArray[5] = new Quotes("Thinking start with a problem and ends in a solution.", "Dr. Edward de Bono"); 


var rand = quotesArray[randomPicker]; 

function printQuote(){ 
for (var q in rand){ 

console.log(rand[q]); //works well but 

//this 
// document.getElementById("msg").innerHTML = rand[q]; 
//not working... 
    } 
} 
//this also not working... 
document.getElementById("msg").innerHTHL = printQuote(); 

Заранее спасибо.

+0

Можем ли мы увидеть ваш HTML? –

ответ

0

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

var randomPicker = Math.floor(Math.random() * 5); 
 
var quotesArray = []; 
 

 
function Quotes(quote, author) { 
 
    this.quote = quote; 
 
    this.author = author; 
 
} 
 

 
quotesArray[0] = new Quotes("Great minds discuss ideas; average minds discuss events; small minds discuss people.", "Eleanor Roosevelt"); 
 
quotesArray[1] = new Quotes("To be yourself in a world that is constantly trying to make you something else is the greatest accomplishment.", "Ralph Waldo Emerson"); 
 
quotesArray[2] = new Quotes("Great things are done by a series of small things brought together.", "Vincent Van Gogh"); 
 
quotesArray[3] = new Quotes("Some are born great, some achieve greatness, and some have greatness thrust upon them.", "William Shakespeare"); 
 
quotesArray[4] = new Quotes("A tiger does not shout its tigritude, it acts.", "Wole Soyinka"); 
 
quotesArray[5] = new Quotes("Thinking start with a problem and ends in a solution.", "Dr. Edward de Bono"); 
 

 

 
var rand = quotesArray[randomPicker]; 
 

 
function printQuote() { 
 
    document.getElementById("quote").innerHTML = rand.quote; 
 
    document.getElementById("author").innerHTML = rand.author; 
 
} 
 

 
printQuote();
<p id="quote"></p> 
 
<p id="author"></p>

Edit: При создании нового объекта в JavaScript, это, вероятно, лучше использовать особые имена для имени объекта, вместо множественного числа.

function Quotes должно быть function Quote. Аналогично, new Quotes должен быть new Quote.

Это просто конвенция.

+0

Это решило проблему. – Abk

Смежные вопросы