2013-08-05 70 views
0

這是命名的代碼,我有:調用動態命名的文本輸入框PHP

<?php 
    for ($i=1; $i<=$housingcount; $i++){ 
     echo '<input onchange="myFunction(value)" size="',11,'" type="text" name="cavqty',$i,'" id="hous',$i,'"/>';} 
    ?> 

哪裏$housingcount是簡單地從數據庫($housingcount=mysql_num_rows($result))查詢的行數。

而且myFunction是不是這個問題的背景下非常重要,因爲它只是一個簡單的求和函數,但無論如何,它看起來是這樣的:

<script> 
    function myFunction(tBox) 
    { 
    var sum=0; 
    var elts = document.getElementsByTagName('input'); 
    for (var i=0; i<elts.length; i++) { 
     var elt=elts[i]; 
     if (elt.id && elt.id.indexOf('hous')===0 sum += Number(elt.value); 
    document.getElementById('sum').innerText=sum; 
    } 
    </script> 

因此,基於PHP代碼的文本框的數量根據這種情況下的外殼數量而變化。因此,文本框被動態命名(cavqty1,cavqty2,cavqty3,...),作爲循環的迭代結果。現在這種命名方法給我造成了很多麻煩,因爲我不知道如何調用文本框名稱以便將它們用於其他功能。

經過研究,我認爲我將不得不迫使他們成爲一個數組,並通過使用foreach語句逐個查看每個單獨的行,但這並不奏效。唉,我非常難以接受這個動態命名的東西。

我對你的問題是:我該如何調用動態命名的文本框,以便我可以在其他函數中使用它們?

+0

您的'if'語句未正確關閉..如果沒有錯別字 – swapnesh

+0

您是否知道'name'屬性中存在HTML語法錯誤? – Flosculus

+0

好吧這段代碼的JavaScript部分工作正常可能只是錯別字,因爲我並不真的擔心它,因爲它在這裏沒有真正的相關性。這是更多的在那裏只爲人們問什麼myFunction是 – user2618927

回答

0

嘗試:

<?php 
for ($i=1; $i<=$housingcount; $i++){ 
    echo '<input onchange="myFunction(value)" size="',11,'" type="text" name="cavqty[]" id="hous',$i,'"/>'; 
} 
?> 

然後在另一端,你可以使用:

if(isset($_POST["cavqty"])){ 
    foreach($_POST["cavqty"] as $cavqty){ 
     echo $cavqty; 
    } 
} 

或者乾脆:$_POST["cavqty"][0]特定的值。

+0

它說未定義的索引和警告:爲foreach提供的無效參數() – user2618927

+0

我不希望具體的值我需要能夠使用該名稱前綴拉動所有值 – user2618927

+0

我已經編輯它,現在嘗試。你真的需要增加ID嗎?爲什麼不使用課堂。 –