如何检索元素
这是我想知道的。我有一个表的行数取决于数字在微调器中的数量。这确实有效,例如,如果我在微调器中输入25,则会出现25行,如果我在微调器中输入7,则会有7行。如何检索元素
所以我的问题是这样的:
比方说,有许多在表中的行。我所拥有的是一个textarea,用户在其中输入他们的问题,然后提交问题,问题应该插入并出现在“Question”列下的表的第一行,textarea变为空白,用户进入他的第二个问题,如果用户提交这个,那么问题会出现在第二行,第三个问题到第三行,第四个问题到第四个行等。
问题是,每次我提交一个问题到表中,它创建一个新的行。所以如果我在表格中有20个空行,因为我在微调表达了20个问题,那么每次我提交一个问题时,它会每次添加一个新行,所以从textarea提交20个问题意味着表格会包含20个空白行和20个问题行。我猜这是因为这样的例子:
var enumeratorCell = document.createElement("td");
所以我想知道的是如何除外创建创建一个新的行的一个元素,我怎么能检索元素,使得它提交的问题在现有的行从上到下,而不是每次提交问题时都创建一个新行?
Below is my code:
function insertQuestion() {
var table = document.getElementById("qandatbl");
var tableBody = table.tBodies[0];
var textarea = document.getElementById("questionTxt");
var row = document.createElement("tr");
tableBody.appendChild(row);
var enumeratorCell = document.createElement("td");
enumeratorCell.className = "qid";
row.appendChild(enumeratorCell);
var questionCell = document.createElement("td");
questionCell.className = "question";
row.appendChild(questionCell);
var questionText = textarea.value;
var questionContent = document.createTextNode(questionText);
questionCell.appendChild(questionContent);
}
HTML:
// table where questions will be inserted into
<table>
<?php
$spinnerCount = $_POST['textQuestion'];
if($spinnerCount > 0) {
for($i = 1; $i <= $spinnerCount; $i++) {?> // this get the number of questions from the spinner
<tr>
<td class="qid"><?php echo $i; ?></td>
<td class="question"></td>
</tr>
</table>
//Text Area and submit button to submit questions
<form id="enter" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<table id='middleDetails' border='1'>
<tr>
<th class='tblheading' colspan='2'>SESSION DETAILS</th>
</tr>
<tr class='trheight'>
</tr>
<tr>
<td id="questionNum">Question No </td>
</tr>
<tr>
<td id="questionContent">Question:</td>
<td id="questionTextarea"><textarea rows="5" cols="40" id="questionTxt" name="questionText"></textarea></td>
</tr>
<tr>
<td id="addQuestionRow" colspan='2'><input id="addQuestion" type="button" value="Add Question" name="addQuestionBtn" onClick="insertQuestion()" /></td>
</tr>
</table>
</form>
我想说的是有一个空白表,下表是一个textarea和一个提交按钮,老师提问进入,当老师提出的问题,它会在表中的第一行中,因为这是第一个问题,那么老师重复,第二个问题在第二行等等。但不是将数据插入已经在表中的行中,而是创建新行并将数据插入到新行中。
我想你可能想要做这样的事情:
var table = document.getElementById(tableId);
var rows = table.getElementsByTagName("tr");
for(i = 0; i < rows.length; i++){
//manipulate rows
}
同意@Gatekeeper。 – 2011-11-28 11:44:23
鉴于现有的表:
<table id="myTable">
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
如果要检索或更改你可以做现有的单元格的内容这样的:
// get reference to the table
var t = document.getElementById("myTable"),
r,
c,
i, j;
// loop through the rows
for (i=0; i<t.rows.length; i++) {
// get reference to current row
r = t.rows[i]; //
// loop through tds of current row
for (j=0; j<r.cells.length; j++) {
// get reference to current cell
c = r.cells[j]; // equivalent to t.rows[i].cells[j]
// display content of cell
alert(c.innerHTML);
// change content of cell
c.innerHTML = "New value " + i + j;
}
}
如果您知道表的大小提前时间,你可以直接引用特定ŧ d - 提的是,指数从0开始,第三行的第二个TD将是:
var particularTD = t.rows[2].cells[1]; // where t was declared above
alert(particularTD.innerHTML);
你能帮我一个忙吗,你能为我现有的表格编码吗?这是因为我看了你现有的表格和代码,而且我完全糊涂了。我不知道“新价值”是什么,或者r,j和c是什么。如果你为我做这件事,我会非常感谢 – BruceyBandit
我的答案中的代码就是一个例子。 “新值”只是一个可以分配给td元素内部html的字符串的例子 - 取决于您自己的有意义的值取决于您。 r,j和c都只是我已经声明的变量。我用r来引用外部循环中的当前行,c引用内部循环中的当前单元格(td元素)。你需要仔细阅读我的例子(和/或谷歌的一些JavaScript教程),直到你理解它。我的例子很简单,所以直到你理解它,你才会理解你自己的代码。 – nnnnnn
马尔科姆,你能不能请重新表述您的问题。确定你想要达到的目标是非常困难的。 –
HTML中的这一小部分PHP代码如何与问题相关? _“每次我提交数据到一个表中,它会创建一个新行”_ - 当你说“submit”时,你的意思是你在页面上有一个现有的HTML表格,并且你想用一个或多个TD元素的内容替换一些新的内容或其他?也许你可以在你的HTML之前和之后显示所需的状态? – nnnnnn
我在说的是有一张空白的桌子,下面的表格是一个textarea和一个提交按钮,老师输入一个问题,当老师提出问题时,它在表格的第一行,因为这是第一个问题,然后老师重复第二个问题在第二行等等。但不是将数据插入已经在表中的行中,而是创建新行并将数据插入到新行中。 – BruceyBandit