2015-04-15 24 views
0

我正在嘗試使用javascript和jquery創建div。從輸入創建div X的時間數

到目前爲止我的代碼:

<script> 
var numOfWindows = 3; 

var arrayDiv = new Array(); 
for (var i = 0; i < numOfWindows; i++) 
{ 
    var newDiv = $('#server div:first').clone(); 
    $('#server').append(newDiv); 
} 
</script> 


<input type="text" name="numserver"><br> 
<button onclick="new_server()">GO</button> 
<br> 

<div id="server"> 
<div id="1"> 
<table border="3"><tbody> 
<tr><th colspan="4" style="background-color:#b0c4de;">Server 1</th></tr> 
<br> 
<tr><td>Technology<select name="tech[]"><option value="w">Web</option><option value="d">DB</option><option value="m">Mail</option><option  value="o">Other</option></select><br> 
<br></td> 
<td>CPU? <input type="text" name="cpu[]"><br></td> 
<td>Memory? <input type="text" name="memory[]"><br></td> 
<td>Disk Space? <input type="text" name="space[]"><br></td></tr> 
<br> 
</tbody></table> 
</div> 
</div> 

我的最終結果是用戶能夠進入服務器的數量,點擊開始,然後的div被自動創建。

我知道如何獲得numOfWindows的值,但我認爲它現在應該與靜態值一起工作。

+6

它不起作用的原因是因爲您將腳本放在DOM中的元素之前,而沒有DOM就緒處理程序。溫你是克隆和追加,沒有可用的元素克隆或追加到。 – adeneo

回答

1

代碼是正確的,但adeneo怎麼說,你沒有DOM準備好的處理程序。 改用這樣的事情:

function LoadMyJs(){ 
 
    var numOfWindows = 3; 
 

 
    var arrayDiv = new Array(); 
 
    for (var i = 0; i < numOfWindows; i++) 
 
    { 
 
    var newDiv = $('#server div:first').clone(); 
 
    $('#server').append(newDiv); 
 
    } 
 
}
<body onLoad="LoadMyJs()">

0

您正在嘗試運行與不確定的HTML工作的腳本。要解決這個問題,您可以在定義HTML之後移動腳本,或者使用jQuery快捷方式document.ready函數,如$(function(){<your code here>});

在第一種情況下,事件處理函數必須是一個全局變量。否則,你在捷徑範圍之前聲明這個變量。

接下來您定義事件處理程序函數獲取input值($('input[name="numserver"]').val())。現在您可以生成數值(Array.apply(null, [+value]).map(function(){<generator here>}))所定義的多個div。要生成副本,可以使用克隆方法,並且生成的div應該像你一樣插入到div容器中。

看起來你想通過點擊「GO」按鈕來生成div。在你的情況下做這個事件處理函數應該被命名爲「new_server」。你不要在你聲明它的「onclick」屬性中調用這個函數。