2013-02-19 72 views
0

我使用javascript動態生成錶行(不涉及jquery)。每行有3個單元格區號,輸入和一個刪除按鈕。添加的行數使用選擇框來選擇3,添加3行等。我想要發生的是,如果他們添加3行然後再添加3.行將顯示爲1,2,3,4,5,6,目前它的1,2,3,1,2,3。當行被刪除時,我也會重新排序行。如何在添加和刪除行時重新排序錶行號

當前代碼的PHP文件:

function display_Zones($focus, $field, $value, $view){ 

    global $locale, $app_list_strings, $mod_strings; 

    $html = ''; 

    if($view == 'EditView'){ 

     $html .= '<script src="modules/dry_Zones/zone_items.js"></script>'; 
     $html .= "<div style='padding-top: 10px; padding-bottom:10px;'>"; 
     $html .= "<select id='zone' name='zone'>"; 
     $html .= get_select_options_with_id($app_list_strings["zone_list"]); 
     $html .= "</select> "; 

     $html .= "<input type=\"button\" tabindex=\"116\" class=\"button\" value=\"addZone\" id=\"addZone\" onclick=\"insertZone()\" />"; 
     $html .= "</div>"; 

     $html .= "<table border='0' cellspacing='4' width='40%' id='zoneItems'>"; 
     $html .= "<tr><td></td><td>Motor Reference Point</td><td></td></tr>"; 

     $html .= "</table>"; 



     return $html; 
    } 

JavaScript文件:

var num = 1; 

function insertZone() { 

var table = document.getElementById('zoneItems'); 

var e = document.getElementById('zone'); 
var number = e.options[e.selectedIndex].value; 

if(number != ''){ 


    for (var i=0; i < number; i++) 
    { 
     var x = table.insertRow(-1); 
     var a = x.insertCell(0); 
     num = num+i; 

     a.innerHTML = "<span>Zone: "+num+"</span> "; 

     var b = x.insertCell(1); 
     b.innerHTML = "<input type='text' name='motor_ref_point' size='18' value='' />"; 

     var c = x.insertCell(2); 
     c.innerHTML = "<button class='button lastChild' onclick='removeZone(this)' ><img src='themes/default/images/id-ff-clear.png'></button>"; 
    } 


} 

}

function removeZone(rows) { 

    var _row = rows.parentElement.parentElement; 
    document.getElementById('zoneItems').deleteRow(_row.rowIndex); 



    }   

回答

1

可能不是最有效的,方式,但我不認爲你」除非有成千上萬的行,否則會發現任何問題。添加/刪除行時,您可以遍歷每行的第一個表格單元格並根據索引對其進行更新。

Array.prototype.forEach.call(document.querySelectorAll('td:first-child'), 
function (elem, idx) { 
    elem.innerHTML = idx + 1; 
}); 

http://jsfiddle.net/ExplosionPIlls/2QxX6/

+0

+1;我正打算用同樣的東西打出答案。 – 2013-02-19 11:57:35

+0

即時通訊不知道如何將其應用於我的代碼? – user794846 2013-02-19 12:01:53

+0

在'insertZone'和'removeZone'後面調用 – 2013-02-19 12:02:52

0

端起來只是在做這樣的:

function insertZone() { 

var table = document.getElementById('zoneItems'); 

var e = document.getElementById('zone'); 
var number = e.options[e.selectedIndex].value; 

if(number != ''){ 


    for (var i=0; i < number; i++) 
    { 
     var x = table.insertRow(-1); 
     var a = x.insertCell(0); 
     num = i+1; 

     // a.innerHTML = "<span>Zone: "+num+"</span> "; 

     var b = x.insertCell(1); 
     b.innerHTML = "<input type='text' name='motor_ref_point' size='18' value='' />"; 

     var c = x.insertCell(2); 
     c.innerHTML = "<button class='button lastChild' onclick='removeZone(this)' ><img src='themes/default/images/id-ff-clear.png'></button>"; 
    } 

    count(); 
} 

}

function removeZone(rows) { 

var _row = rows.parentElement.parentElement; 
document.getElementById('zoneItems').deleteRow(_row.rowIndex); 

count(); 
} 

function count(){ 

var table = document.getElementById("zoneItems"); 
var tbody = table.tBodies[0]; 
row_count = tbody.rows.length - 1; 

for (var i = 0, row; row = tbody.rows[i]; i++) { 

    if(i != 0){ 

     for (var j = 0, col; col = row.cells[j]; j++) { 

      if(j == 0){ 
       col.innerHTML = "<span>Zone: "+i+"</span> "; 
      } 
     } 
    } 

} 

} 
+0

'if(i!= 0)'是什麼? – 2013-02-19 12:30:38

+0

確保它不是表中的第一行,因爲那裏有標題。 – user794846 2013-02-19 12:32:01

+0

在這種情況下,第一行應該在''中,而不是tbodies,並且您應該使用''作爲列 – 2013-02-19 12:32:43

相關問題