2012-01-29 58 views
2

有一个表中包含添加行按钮的字段。我使用onchange事件来调用其他表数据,所以较早(do not need input the value manually). 后来我在同一个表中添加行,当我选择在选项框中选择一个选项可以自动获得已选择的值之后,我选择一个选项放回盒子选项,并从第一个得到不同的值,the problem is the values ​​obtained appear in the first box, not in the second box.如何根据onchange事件的序列ID名称获取值?

对于HTML例如:

<table id="table"> 
    <tr> 
     <td>No</td> 
     <td>Name</td> 
     <td>Class</td> 
     <td>Point</td> 
     <td>Action</td> 
    </tr> 
    <tr> 
      <td>1</td> 
     <td><select name="name"> 
      <option value="#">&nbsp;</option> 
      <?php 
        opendb(); 
       $query = "SELECT * FROM student"; 
       $result = mysql_query($query); 
       while($data = mysql_fetch_array($result)){ 
        $ID = $data['ID']; 
        $Name = $data['Name']; 
        echo "<option value='$ID'>$Name</option>"; 
       } 
      ?> 
      </select> 
     </td> 
     <td><select name='class' onchange="choosepoint(this);"> 
      <option value="#">&nbsp;</option> 
      <?php 
        opendb(); 
       $query = "SELECT * FROM student2"; 
       $result = mysql_query($query); 
       while($data = mysql_fetch_array($result)){ 
         $ID1 = $data['ID']; 
        $class = $data['Class']; 
        echo "<option value='$ID'>$class</option>"; 
       } 
      ?> 
      </select> 
     </td> 
     <td> 
       <div id="point" name="point"></div> 
      </td> 
      <td><input type="button" value=" + " onClick="addRowToTable();"> | <input type="button" value=" - " onClick="removeRowFromTable();"></td> 
    </tr> 
</table> 

我正在寻找,这个问题我发现这里:

function choosepoint(combobox) 
{ 
    var kode = combobox.value; 
    if (!kode) return; 
    xmlhttp.open('get', '../template/get_point.php?kode='+kode, true); 
    xmlhttp.onreadystatechange = function() { 
     if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) 
     { 
      document.getElementById("point").innerHTML = xmlhttp.responseText; 
     } 
     return false; 
    } 
    xmlhttp.send(null); 
} 

如果ID名称为“点”改成“点2”,那么该值将出现在第二个框,但在第一个框中的值丢失。

于是,我就循环,以获得ID名称的值是点,点2,POINT3等(根据需要多少添加行)。

function choosepoint(combobox) 
{ 
    var kode = combobox.value; 
    if (!kode) return; 
    xmlhttp.open('get', '../template/get_point.php?kode='+kode, true); 
    xmlhttp.onreadystatechange = function() { 
     if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) 
     { 
      Var tbl = document.getElementById("table"); 
      var r = tbl.length; 
      var i = r; 
      document.getElementById("point"+ i).innerHTML = xmlhttp.responseText; 
     } 
     return false; 
    } 
    xmlhttp.send(null); 
} 

我已经得到的结果为空或没有价值,不能运行或不能获得的价值是点,点2,POINT3等 有没有办法,我做了任何脚本错误?需要大帮忙m(_ _)m。

谢谢。

更新:这是对解决。

function choosepoint(combobox) 
{ 
    var kode = combobox.value; 
    if (!kode) return; 
    xmlhttp.open('get', '../template/get_point.php?kode='+kode, true); 
    xmlhttp.onreadystatechange = function() { 
     if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) 
     { 
      var tbl = document.getElementById("table"); 
     var r = tbl.rows.length; 
      var add = document.getElementById("point"+r); 

     add.innerHTML = xmlhttp.responseText; 
     } 
     return false; 
    } 
    xmlhttp.send(null); 
} 
+0

你可以减少你的问题到一个更简单的形式?我无法追随你真正要求的。请提供简单的步骤来描述您在网页上执行的操作,调用哪些代码以及您期望得到但未得到的结果。 – jfriend00 2012-01-29 07:52:23

+0

@ jfriend00好的,这里是例子:(如你在桌子上看到的那样)。 1号我将选择AAA的名称,然后选择II的类,当我选择在II类,我会自动在100.00(here the point will appear)手动拿到一分没有我的输入值(当然通过,如果要使用的onchange会发生)。 – candies 2012-01-29 09:22:19

+0

@ jfriend00然后当我想添加行时,会有数字2的权利?所以No 2我会选择BBB作为名字,选择III作为课程,然后当我在课堂上选择III时,我得到的点将出现在80.00(here)。有两个不同点的数据,第一个是100.00和第二个80.00, 2. Nuh,我的问题和问题是No.2中包含的结果点是80.00,它不是完全出现在No.2,但它确实出现在No.1。因为我们知道我们在1号点得到的点是100.00 。 那么如何解决每个数据或数字都有自己的观点? – candies 2012-01-29 09:23:00

回答

1

在你的代码给表的ID为“表”,然后您访问“的document.getElementById(‘表’)”,然后你用“TBL。长度“导致null或没有值。这里的问题是,当你使用的getElementById你没有财产“长度”。为了访问多个表使用以下内容

<table name="table"> 
and then 
tbl = document.getElementById('table') 
r = tbl.rows.length; //This will give you the row length. 
function choosepoint(combobox) 
{ 
    var kode = combobox.value; 
    if (!kode) return; 
    xmlhttp.open('get', '../template/get_point.php?kode='+kode, true); 
    xmlhttp.onreadystatechange = function() { 
     if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) 
     { 
      Var tbl = document.getElementById('table') 
      var r = tbl.rows.length; 
       alert(document.getElementById("point"+r));//This should be object. If undefined then you don't have any element. 
       **//Edit Part** 
       if(document.getElementById("point"+r)) 
       document.getElementById("point"+r).innerHTML = xmlhttp.responseText; 
       else 
       { 
        var cellRight = row.insertCell(3);//The cell or column number can be any here am using it as third column. 
        var div = document.createElement('div'); 
        div.id = 'point' + r; 
        cellRight.appendChild(div); 
        cellRight.innerHTML = xmlhttp.responseText; 
       } 
      **//Till Here** 
     } 
     return false; 
    } 
    xmlhttp.send(null); 
} 

希望这有助于。

+0

感谢@AmGates的帮助。 我试过你的代码,它给了我值,是1.当我打算添加行时,我得到的值是1而不是2。我想从1,2,3,4等等中得到它。 – candies 2012-01-30 04:21:51

+0

改为: '

tbl = document.getElementById('table'); i = tbl.rows.length; 它给我长度顺序(1,2,3,4等)。 但我仍然有一个问题,当我添加变量我(它有长度)在这里'document.getElementById(“点”+ i).innerHTML = xmlhttp.responseText;'该“点”不显示是“point1”或“point2”或“point3”(取决于我添加的行数)。有什么想法? – candies2012-01-30 04:40:38

+0

现在检查我的答案。 – AmGates 2012-01-30 09:41:57

相关问题