2014-02-08 2 views
1

Я делаю тест на JavaScript, который случайным образом выбирает 10 вопросов из списка 20. Моего кода говорят:document.getElementById.innerHTML = Радио кнопки?

if (question==1){ 
    document.getElementById(q).innerHTML="Question 1" 
} 

Моя проблема заключается в том, что мой последний тест не будет говорить «Вопрос 1.» Я хочу, чтобы он записывал переключатели для множественного выбора. Как заменить «Вопрос 1» на переключатели?

Кроме того, я не хочу, чтобы мой код вызывал один и тот же вопрос более одного раза. Например: поэтому они не отвечают на вопрос 4 дважды. Вот мой полный код:

<body> 
    <input type="button" value="Start!" onclick="choosequestions()"/><br><br> 
    <div id="1"></div><br> 
    <div id="2"></div><br> 
    <div id="3"></div><br> 
    <div id="4"></div><br> 
    <div id="5"></div><br> 
    <div id="6"></div><br> 
    <div id="7"></div><br> 
    <div id="8"></div><br> 
    <div id="9"></div><br> 
    <div id="10"></div><br> 
<body> 
<script> 
    function choosequestions(){ 
     for(q=1;q < 11;q++){ 
      var question=Math.floor((Math.random()*20)+1) 
      if (question==1){ 
       document.getElementById(q).innerHTML="Question 1"  
      }else if (question==2){ 
       document.getElementById(q).innerHTML="Question 2" 
      }else if (question==3){ 
       document.getElementById(q).innerHTML="Question 3" 
      }else if (question==4){ 
       document.getElementById(q).innerHTML="Question 4" 
      }else if (question==5){ 
       document.getElementById(q).innerHTML="Question 5" 
      }else if (question==6){ 
       document.getElementById(q).innerHTML="Question 6" 
      }else if (question==7){ 
       document.getElementById(q).innerHTML="Question 7" 
      }else if (question==8){ 
       document.getElementById(q).innerHTML="Question 8" 
      }else if (question==9){ 
       document.getElementById(q).innerHTML="Question 9" 
      }else if (question==10){ 
       document.getElementById(q).innerHTML="Question 10" 
      }else if (question==11){ 
       document.getElementById(q).innerHTML="Question 11" 
      }else if (question==12){ 
       document.getElementById(q).innerHTML="Question 12" 
      }else if (question==13){ 
       document.getElementById(q).innerHTML="Question 13" 
      }else if (question==14){ 
       document.getElementById(q).innerHTML="Question 14" 
      }else if (question==15){ 
       document.getElementById(q).innerHTML="Question 15" 
      }else if (question==16){ 
       document.getElementById(q).innerHTML="Question 16" 
      }else if (question==17){ 
       document.getElementById(q).innerHTML="Question 17" 
      }else if (question==18){ 
       document.getElementById(q).innerHTML="Question 18" 
      }else if (question==19){ 
       document.getElementById(q).innerHTML="Question 19" 
      }else if (question==20){ 
       document.getElementById(q).innerHTML="Question 20" 
      } 
     } 
    } 
</script> 
+0

Пожалуйста, сделайте JSFiddle и дайте мне знать ... –

+1

Это то, о чем говорит @FranciscoCorrales: [нажмите здесь] (http://doc.jsfiddle.net/) –

ответ

0

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

function choosequestions(){ 
    for(q=1; q < 11; q++){ 
     var question=Math.floor((Math.random()*20)+1); 
     document.getElementById(q).innerHTML = 'Question ' + question; 
    } 
} 

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

function choosequestions(){ 
    var qList = []; 
    for(q=1; q < 11; q++){ 
     var question = Math.floor((Math.random()*20)+1); 

     // Check to make sure Question # 'question' has not been added already: 
     while (qList.indexOf(question) !== -1) { 
      question = Math.floor((Math.random()*20)+1); 
     } 
     qList.push(question); 
     document.getElementById(q).innerHTML = 'Question ' + question; 
    } 
} 

Если вы не понимаете эту функцию, сообщите мне, и я могу объяснить.

Наконец, чтобы текст идти в радио-кнопку, а также использовать функцию выше, изменить это:

function choosequestions(){ 
    var qList = []; 
    for(q=1; q < 11; q++){ 
     var question = Math.floor((Math.random()*20)+1); 
     while (qList.indexOf(question) !== -1) { 
      question = Math.floor((Math.random()*20)+1); 
     } 
     qList.push(question); 

     // Create radio button within each div element: 
     document.getElementById(q).innerHTML = '<input type="radio" name="question" value="' + q + '">Question ' + question; 
    } 
} 

Надеется, что это полезно!


Edit: В соответствии с вашими комментариями, я считаю, что это то, что вы ищете:

function choosequestions(){ 
    var qList = []; 
    for(q=1; q < 11; q++){ 
     var question = Math.floor((Math.random()*20)+1); 
     var message = ''; 
     while (qList.indexOf(question) !== -1) { 
      question = Math.floor((Math.random()*20)+1); 
     } 
     qList.push(question); 

     // Create radio button within each div element: 
     if (question==1){ 
      message = "Question 1"; 
     }else if (question==2){ 
      message = "Question 2"; 
     } 
     ... 
     // Lots of other 'else if' statements 
     ... 
     }else if (question==20){ 
      message = "Question 20"; 
     } 
     document.getElementById(q).innerHTML = message; 
    } 
} 

Таким образом, вы можете изменить HTML, брошенный в каждый конкретный вопрос дел.

+0

Tyrannical Tyrannosaurus, я был бы признателен за любые объяснения. (Мне только 14 лет, и я недавно начал преподавать себе JavaScript, поэтому пока не знаю много.) –

+0

Groovy, какие именно детали? BTW [эта ссылка] (http://www.codecademy.com/tracks/javascript) - отличный ресурс для обучения JS. –

+0

Я не понимаю ваш второй код. Спасибо за ссылку, я уверен, что узнаю много! –

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