如何检索元素

问题描述:

这是我想知道的。我有一个表的行数取决于数字在微调器中的数量。这确实有效,例如,如果我在微调器中输入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和一个提交按钮,老师提问进入,当老师提出的问题,它会在表中的第一行中,因为这是第一个问题,那么老师重复,第二个问题在第二行等等。但不是将数据插入已经在表中的行中,而是创建新行并将数据插入到新行中。

+1

马尔科姆,你能不能请重新表述您的问题。确定你想要达到的目标是非常困难的。 –

+1

HTML中的这一小部分PHP代码如何与问题相关? _“每次我提交数据到一个表中,它会创建一个新行”_ - 当你说“submit”时,你的意思是你在页面上有一个现有的HTML表格,并且你想用一个或多个TD元素的内容替换一些新的内容或其他?也许你可以在你的HTML之前和之后显示所需的状态? – nnnnnn

+0

我在说的是有一张空白的桌子,下面的表格是一个textarea和一个提交按钮,老师输入一个问题,当老师提出问题时,它在表格的第一行,因为这是第一个问题,然后老师重复第二个问题在第二行等等。但不是将数据插入已经在表中的行中,而是创建新行并将数据插入到新行中。 – BruceyBandit

我想你可能想要做这样的事情:

var table = document.getElementById(tableId); 
var rows = table.getElementsByTagName("tr"); 
for(i = 0; i < rows.length; i++){   
    //manipulate rows 
} 
+0

同意@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); 
+0

你能帮我一个忙吗,你能为我现有的表格编码吗?这是因为我看了你现有的表格和代码,而且我完全糊涂了。我不知道“新价值”是什么,或者r,j和c是什么。如果你为我做这件事,我会非常感谢 – BruceyBandit

+0

我的答案中的代码就是一个例子。 “新值”只是一个可以分配给td元素内部html的字符串的例子 - 取决于您自己的有意义的值取决于您。 r,j和c都只是我已经声明的变量。我用r来引用外部循环中的当前行,c引用内部循环中的当前单元格(td元素)。你需要仔细阅读我的例子(和/或谷歌的一些JavaScript教程),直到你理解它。我的例子很简单,所以直到你理解它,你才会理解你自己的代码。 – nnnnnn