私の質問は最終的にこのサイトに関連します:
http://dbtest.net16.net/ethanol-01.html
編集:暗号化されていないページのソースコードはこちら>>> http://dbtest.net16.net/ethanol-22.html
これは、JavaScriptを使用して計算された結果を持つHTMLフォームです。私の目標は、ユーザー入力に応じて2〜6列の列と可変数の行を表示することです(フォームは変更されます)。私の問題は、ユーザーが計算ボタンをクリックした後にJavaScriptでテーブルを作成する方法を完全に理解していないことです。いくつかの良い答えを見つけましたが、明らかにすべてを完全に理解しているわけではありません。次のコードを実行すると、出力に表示するものに多少似ています。
<html>
<!-- http://www.Java2s.com/Tutorial/JavaScript/0220__Array/OutputarrayelementinaHTMLtableformat.htm -->
<head>
<title>Table of Numbers</title>
</head>
<body>
<h1>Table of Numbers</h1>
<table border="0">
<script language="javascript" type="text/javascript">
<!--
var myArray = new Array();
myArray[0] = 1;
myArray[1] = 2.218;
myArray[2] = 33;
myArray[3] = 114.94;
myArray[4] = 5;
myArray[5] = 33;
myArray[6] = 114.980;
myArray[7] = 5;
document.write("<tr><td style='width: 100px; color: red;'>Col Head 1</td>");
document.write("<td style='width: 100px; color: red; text-align: right;'>Col Head 2</td>");
document.write("<td style='width: 100px; color: red; text-align: right;'>Col Head 3</td></tr>");
document.write("<tr><td style='width: 100px;'>---------------</td>");
document.write("<td style='width: 100px; text-align: right;'>---------------</td>");
document.write("<td style='width: 100px; text-align: right;'>---------------</td></tr>");
for (var i = 0; i < 8; i++) {
document.write("<tr><td style='width: 100px;'>Number " + i + " is:</td>");
myArray[i] = myArray[i].toFixed(3);
document.write("<td style='width: 100px; text-align: right;'>" + myArray[i] + "</td>");
document.write("<td style='width: 100px; text-align: right;'>" + myArray[i] + "</td></tr>");
}
//-->
</script>
</table>
</body>
</html>
実際のjavascriptファイルを使用してテストテーブルを作成し、テストデータを入力できるようになったら、残りを自分で把握できるはずです(私は思う)。
以下は、私がこれまでに見つけたいくつかの最良の答えです。
http://jsfiddle.net/drewnoakes/YAXDZ/
上記のリンクはstackoverflowで作成されましたが、現時点では元の投稿を見つけることができないようです。
http://www.Java2s.com/Tutorial/JavaScript/0220__Array/OutputarrayelementinaHTMLtableformat.htm
どんな助けも大歓迎です。経験が限られているため、シンプルな方が良いです。
問題は、新しいタグを挿入するたびにJSを使用して_<table>
_または_<tr>
_または_<td>
_タグを書き込もうとすると、ブラウザーはそれを考えるとそれを閉じようとすることですコードにエラーがあります。
テーブルを1行ずつ記述する代わりに、テーブルを変数に連結し、作成後に挿入します。
_<script language="javascript" type="text/javascript">
<!--
var myArray = new Array();
myArray[0] = 1;
myArray[1] = 2.218;
myArray[2] = 33;
myArray[3] = 114.94;
myArray[4] = 5;
myArray[5] = 33;
myArray[6] = 114.980;
myArray[7] = 5;
var myTable= "<table><tr><td style='width: 100px; color: red;'>Col Head 1</td>";
myTable+= "<td style='width: 100px; color: red; text-align: right;'>Col Head 2</td>";
myTable+="<td style='width: 100px; color: red; text-align: right;'>Col Head 3</td></tr>";
myTable+="<tr><td style='width: 100px; '>---------------</td>";
myTable+="<td style='width: 100px; text-align: right;'>---------------</td>";
myTable+="<td style='width: 100px; text-align: right;'>---------------</td></tr>";
for (var i=0; i<8; i++) {
myTable+="<tr><td style='width: 100px;'>Number " + i + " is:</td>";
myArray[i] = myArray[i].toFixed(3);
myTable+="<td style='width: 100px; text-align: right;'>" + myArray[i] + "</td>";
myTable+="<td style='width: 100px; text-align: right;'>" + myArray[i] + "</td></tr>";
}
myTable+="</table>";
document.write( myTable);
//-->
</script>
_
コードが外部JSファイルにある場合、HTMLで、テーブルを表示するIDを持つ要素を作成します。
_<div id="tablePrint"> </div>
_
また、JSではdocument.write(myTable)
の代わりに次のコードを使用します。
_document.getElementById('tablePrint').innerHTML = myTable;
_
この美しいコードは、各tdに配列値を持つテーブルを作成します。私のコードではなく、助けてくれました!
var rows = 6,
cols = 7;
for(var i = 0; i < rows; i++) {
$('table').append('<tr></tr>');
for(var j = 0; j < cols; j++) {
$('table').find('tr').eq(i).append('<td></td>');
$('table').find('tr').eq(i).find('td').eq(j).attr('data-row', i).attr('data-col', j);
}
}
In the html file there are three input boxes with userid,username,department respectively.
これらの入力ボックスは、ユーザーから入力を取得するために使用されます。
ユーザーは、任意の数の入力をページに追加できます。
ボタンをクリックすると、スクリプトはデバッガーモードを有効にします。
Javascriptでは、デバッガーモードを有効にするには、javascriptに次のタグを追加する必要があります。
/ ************************************************* *********************** \
Tools->Internet Options-->Advanced-->uncheck
Disable script debugging(Internet Explorer)
Disable script debugging(Other)
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Dynamic Table</title>
<script language="javascript" type="text/javascript">
// <!CDATA[
function CmdAdd_onclick() {
var newTable,startTag,endTag;
//Creating a new table
startTag="<TABLE id='mainTable'><TBODY><TR><TD style=\"WIDTH: 120px\">User ID</TD>
<TD style=\"WIDTH: 120px\">User Name</TD><TD style=\"WIDTH: 120px\">Department</TD></TR>"
endTag="</TBODY></TABLE>"
newTable=startTag;
var trContents;
//Get the row contents
trContents=document.body.getElementsByTagName('TR');
if(trContents.length>1)
{
for(i=1;i<trContents.length;i++)
{
if(trContents(i).innerHTML)
{
// Add previous rows
newTable+="<TR>";
newTable+=trContents(i).innerHTML;
newTable+="</TR>";
}
}
}
//Add the Latest row
newTable+="<TR><TD style=\"WIDTH: 120px\" >" +
document.getElementById('userid').value +"</TD>";
newTable+="<TD style=\"WIDTH: 120px\" >" +
document.getElementById('username').value +"</TD>";
newTable+="<TD style=\"WIDTH: 120px\" >" +
document.getElementById('department').value +"</TD><TR>";
newTable+=endTag;
//Update the Previous Table With New Table.
document.getElementById('tableDiv').innerHTML=newTable;
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<label>UserID</label>
<input id="userid" type="text" /><br />
<label>UserName</label>
<input id="username" type="text" /><br />
<label>Department</label>
<input id="department" type="text" />
<center>
<input id="CmdAdd" type="button" value="Add" onclick="return CmdAdd_onclick()" />
</center>
</div>
<div id="tableDiv" style="text-align:center" >
<table id="mainTable">
<tr style="width:120px " >
<td >User ID</td>
<td>User Name</td>
<td>Department</td>
</tr>
</table>
</div>
</form>
</body>
</html>