在Javascript动态表中计算和写入值

时间:2015-02-27 18:08:51

标签: javascript html-table sas

我想基于其他单元格中的值(例如di和br)计算动态表格的每一行中的T1和T2的值。这些值作为一个整体将作为宏变量发送,以便在SAS程序中处理。在这种情况下,我可以选择输入或计算T1和T2的值。我是Javascript的新用户。我制作的代码如下。无论我如何尝试,我都无法将T1和T2的值写回表中。

<!DOCTYPE html>
<html>
<head>
<script language="javascript">
function addRow(dataTable){
    var table=document.getElementById('dataTable');
    var rowCount=table.rows.length;
    var rowCount1=table.rows.length-1;
    var row=table.insertRow(rowCount);
    var cell01=row.insertCell(-1);var element01=document.createElement("input");element01.type="checkbox";element01.name="chkbox[]";cell01.appendChild(element01);
    var cell02=row.insertCell(-1);var element02=document.createElement("text");element02.name="nr"; cell02.innerHTML=rowCount1+1;
    var cell04=row.insertCell(-1);var element04=document.createElement("input");element04.type="text"; element04.name="di"; element04.id="di"; cell04.appendChild(element04);
    var cell05=row.insertCell(-1);var element05=document.createElement("input");element05.type="text"; element05.name="br"; element04.id="br"; cell05.appendChild(element05);
    var cell07=row.insertCell(-1);var element07=document.createElement("input");element07.type="text";element07.value="CRN"; element07.name="kurve"; element07.id="kurve"; cell07.appendChild(element07);
    var cell27=row.insertCell(-1);var element27=document.createElement("input");element27.type="button";element27.value="send"; element27.onclick="Calculate()"; cell27.appendChild(element27);
    var cell10=row.insertCell(-1);var element10=document.createElement("input");element10.type="text"; element10.name="T1"; element10.id="T1"; element10.style.height='16px'; cell10.appendChild(element10);
    var cell11=row.insertCell(-1);var element11=document.createElement("input");element11.type="text"; element11.name="T2"; element11.id="T2"; cell11.appendChild(element11);
}
function deleteRow(dataTable){
    var table=document.getElementById(dataTable);
    var rowCount=table.rows.length;
    for(var i=0;i<rowCount;i++){
        var row=table.rows[i];
        var chkbox=row.cells[0].childNodes[0];
        if(null!=chkbox&&true==chkbox.checked){
            table.deleteRow(i);rowCount--;i--;
        }
    }
}
function Calculate() {
    var T1V = 0;
    var di = table.getElementsById('di').innerHTML;
    var br = table.getElementsById('br').innerHTML;
    var T1V =(100+br/di)*1.1  ;
    document.getElementById('T1').value=T1V;
}             
</script>
</head>
<body>
<input type="button" value="add row" onclick="addRow('dataTable')">
<input type="button" value="remove row" onclick="deleteRow('dataTable')"> 
<table id="dataTable">
   <thead>
       <tr>
            <th style="text-align:center;"> &nbsp </th>
            <th style="text-align:center;">nr.</th>
            <th style="text-align:center;">Di</th>
            <th style="text-align:center;">Br</th>
            <th style="text-align:center;">Kurve</th>
            <th style="text-align:center;"> &nbsp </th>
            <th style="text-align:center;">T1</th>
            <th style="text-align:center;">T2</th>
       </tr>
   </thead>
</table>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

我认为这就是您所需要的:http://jsfiddle.net/ko4vgudu/6/

您需要为表中的元素指定唯一ID,之后您可以进行计算,并使用结果填写匹配的单元格。

function Calculate(el) {
    var row_id = el.id;
    var row_split1 = row_id.split('_')[1];
    di = document.getElementById('di_'+row_split1).value;
    br = document.getElementById('br_'+row_split1).value;
    T1V = (100 + br / di) * 1.1;
    document.getElementById('T1_'+row_split1).value = T1V;
    T2V = (100 + br*1.1 / di) / 1.1;
    document.getElementById('T2_'+row_split1).value = T2V;
};