2013-04-09 99 views
1

在這段代碼中,我試圖根據addInput(divname)函數使用change事件處理的select字段的輸入生成動態文本字段,但addInput函數中的while循環不工作,並且當我刪除while循環時加工。我必須生成選定的編號。文本字段的...而且文本字段應該當我選擇不同數量的改變......雖然循環不能在JavaScript代碼中工作?

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <form action="adduniv.php" method="post"> 
      University Name: <input type="text" name="college"> 
      No. of branches: 
      <div id="dynamicInput"> 
       <select name="branches" id="branches" onchange="if (this.selectedIndex) addInput('dynamicInput');;" "> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
        <option value="4">4</option> 
        <option value="5">5</option> 
        <option value="6">6</option> 
        <option value="7">7</option> 
        <option value="8">8</option> 
       </select> 
      </div> 
      <script> 
       var counter = 0; 
       var limit = 3; 
       function addInput(divName) 
       {  
        var k=parseInt(document.getElementById("branches")); 
        var newdiv; 
        while(k>0) 
        { 
         newdiv = document.createElement('div'); 
         newdiv.innerHTML = "Entry " + (counter + 1) + " <br><input type='text' name='myInputs[]'>"; 
         document.getElementById(divName).appendChild(newdiv); 
         counter++; 
         k--; 
        } 
       } 
      </script> 
      <input type="submit" value="submit" /> 
     </form> 
    </body> 
</html> 

回答

0

document.getElementById("branches")返回一個DOM節點,但你需要做的,是讓這個DOM節點的值。因此請嘗試以下操作以生成k

var k=parseInt(document.getElementById("branches").value); 
+0

是的,我忘了補充說..謝謝你,我還有一個問題..我不能訪問動態生成的文本字段與PHP ....當JavaScript不僅觸發textfields,但我也不能訪問整個窗體的JavaScript。 – 2013-04-09 14:54:55

1
var k=parseInt(document.getElementById("branches")) 

你不能parseInt函數DOM元素。

懷疑你的意思

var k=parseInt(document.getElementById("branches").value,10) 

與感謝來自Shikiryu重新註釋:指定基數明確。

+0

'parseInt'採用另一個參數。 – Shikiryu 2013-04-09 14:11:55

+0

是的,可選的基數參數默認爲10?我不認爲包括這一點。 – drquicksilver 2013-04-09 14:17:59

+0

默認情況下,它不是**基數10。 [看到這個](http://stackoverflow.com/questions/850341/how-do-i-work-around-javascripts-parseint-octal-behavior)和MDN文檔說:[*總是指定這個參數來消除讀者混亂,並保證可預測的行爲*](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt) – Shikiryu 2013-04-09 14:44:32

0

更改的行

var k=parseInt(document.getElementById("branches")); 

var k=parseInt(document.getElementById("branches").value); 
+0

是的,我忘了補充說..謝謝你,我得到了一個更多的問題..我不能訪問動態生成的文本字段與PHP ....當JavaScript不僅觸發textfields,但我也不能訪問整個窗體的JavaScript。 – 2013-04-09 14:54:22

0
parseInt(document.getElementById("branches")); 

將導致NaN據我可以告訴。您試圖將整個DOM節點解析爲一個整數,您期望什麼?您可能希望從中獲得value property

parseInt(document.getElementById("branches").value, 10); 
+0

是的,我忘了補充說..謝謝你,我有一個問題..我不能訪問動態生成的文本字段與PHP ....當JavaScript不僅觸發textfields,但我也不能訪問整個窗體的JavaScript。 – 2013-04-09 14:57:11

+0

我不明白爲什麼不。你在做什麼?有沒有錯誤? – Bergi 2013-04-09 16:20:16

0

我想你忘了。價值增加的document.getElementById(「分支」)

+0

是的,我忘了補充說..謝謝你,我還有一個問題..我不能訪問動態生成的文本字段與PHP ....當JavaScript不僅觸發textfields,但我也不能訪問整個窗體的JavaScript。 – 2013-04-09 14:55:15

0

好吧,我知道這個問題解決了,但我會嘗試這樣做:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8">  
    <title>Creating input fields</title> 
    <script> 
     function addInput(nr_branches) { 
     var nCounter = 0;   
     //-- Cleaning all elements 
     var divB = document.getElementById('divBranches'); 
     if(divB.hasChildNodes()) { 
      while(divB.childNodes.length >= 1) { 
      divB.removeChild(divB.firstChild); 
      } 
     }     
     while(nCounter < nr_branches) {   
      //-- Create a input field 
      var input = document.createElement("input"); 
      input.type = 'text'; 
      input.name = 'branche_nr_' + nCounter; 
      input.placeholder = 'Branche Nr.' + nCounter; 
      //document.getElementById("divBranches").innerHTML = "<input type='text' name='branche_nr_'"+ nCounter +" placeholder='Branche Nr."+ nCounter +"' />"; 
      document.getElementById('divBranches').appendChild(input);   
      nCounter++;   
     }     
     }  
    </script> 
    </head> 
    <body> 
    <form name="frm" action="adduniv.php" method="post"> 
     <input type="text" name="college" placeholder="University Name" /> 
     <select name="branches" id="branches" onchange="addInput(this.value)"> 
     <option value="0">-select your branche-</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="8">8</option> 
     </select> 
     <div id="divBranches"></div> 
     <input type="submit" value="submit" />  
    </form> 
    </body> 
</html>