2017-07-07 60 views
0

我想通過一個數字提示用戶輸入:integer,大於0,並且是數字。我做了while while while循環,似乎工作正常。有了這個數字,我必須將它傳遞給名爲「genTable」的函數,並根據用戶輸入的內容創建一個具有動態行數的表格。然而,用我目前的代碼,我似乎無法讓表格出現在頁面上。關於我出錯的地方以及如何解決它的任何想法?JavaScript。基於用戶輸入創建一個動態表

<!DOCTYPE HTML> 

<html> 
<head> 
<title>jsLoopDemo</title> 

<!-- 
Honor Code: I acknowledge that this code represents my own work: CC 
Date: July 6, 2017 
--> 

<meta charset="utf-8" /> 
<meta name="description" content="Create a chart with rows based on a number 
user chose." /> 
<meta name="keywords" content="loop, row, dynamic" /> 
<meta name="author" content="" /> 


<script type="text/javascript"> 


    do{ 
     var numChose = prompt("Please enter an interger greater than zero."); 
    }while (isNaN(numChose) || numChose % 1 !== 0 || numChose < 1); 

    function genTable(numChose) 
    { 
     var table = document.createElement("TABLE"); 
     var tableBody = document.createElement("TBODY"); 
     table.appendChild(tableBody); 
     var myTableDiv = document.getElementById("mytable"); 


     for (var r = 0; r <= numChose; r++) 
      { 
       var tr = document.createElement("TR"); 
       tableBody.appendChild(tr); 
       var td = document.createElement("TD"); 
       tr.appendChild(td); 
       td.appendChild(document.createTextNode("Row " + r)); 
      } 
    myTableDiv.appendChild(table); 
    } 



</script> 



</head> 

<body> 

<div id="mytable"> 
</div> 

</body> 
</html> 

回答

0

兩件事情:

您需要在提示符後實際調用的功能,所以您需要做後添加一行,則:

genTable(numChose); 

這仍然無法工作,因爲DOM不會準備好(myTableDiv將不確定),因此您需要將整個代碼包裝在事件監聽器中:

document.addEventListener("DOMContentLoaded", function(event) { 
    //do work 
}); 
+0

這工作很好,但是,我會很感激爲什麼我需要做genTable(numChose)的一些推理;如果它在函數的下一行。有什麼不同? – CChristiansen

+0

寫'function genTable(numChose)'只_defines_一個名爲'genTable'的函數帶有一個參數numChose,但不調用它,你仍然需要這樣做。一個函數通常用於重用代碼,因爲它可以被重複調用。如果這只是在你的代碼中只發生一次,你也可以廢棄這個函數(只是使用函數中的代碼),它就會起作用。 – mvuajua

0

移動<script>代碼

<div id="mytable"> 
</div> 
<body>

,使得元件上呈現DOM後而生成表並調用該函數

genTable(numChose); 

你從用戶獲取號碼後。

相關問題