Php 如何根据onchange事件的序列ID名称获取值?

Php 如何根据onchange事件的序列ID名称获取值?,php,javascript,onchange,xmlhttprequest,Php,Javascript,Onchange,Xmlhttprequest,有一个表的“添加行”按钮包含字段。我使用onchange事件调用其他表中的数据,因此当我在选项框中选择一个选项时,可以自动获取先前选择的值,而不需要手动输入该值。 然后我在同一个表中添加行,然后在框选项中选择一个选项并获得不同的值​​从一开始,问题在于价值观​​获取的数据将显示在第一个框中,而不是第二个框中 对于html示例: <table id="table"> <tr> <td>No</td> <t

有一个表的“添加行”按钮包含字段。我使用onchange事件调用其他表中的数据,因此当我在选项框中选择一个选项时,可以自动获取先前选择的值,而不需要手动输入该值。 然后我在同一个表中添加行,然后在框选项中选择一个选项并获得不同的值​​从一开始,问题在于价值观​​获取的数据将显示在第一个框中,而不是第二个框中

对于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>
如果ID名称点更改为点2,则该值将出现在第二个框中,但第一个框中的值丢失

因此,我尝试循环获取ID名称的值为point、point2、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);
}
我得到的结果是null或没有值,无法运行或无法将值设置为point、point2、point3等。 我写的剧本有错吗?需要很大的帮助

谢谢

更新:这是为了解决问题


在代码中,您将表的id指定为table,然后访问document.getElementById'table',然后使用tbl.length,结果是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);
}

希望这有帮助。

你能把你的问题简化成更简单的形式吗?我听不懂你到底在问什么。请提供简单的步骤来描述您在网页上所做的事情、调用了什么代码以及您期望得到但没有得到的结果。@jfriend00好的,下面是一个示例:如您在表格上所看到的。否1我将选择AAA作为名称,选择II作为类,当我在类上选择II时,我将在中自动获得一个点,而无需我手动输入值。当然,如果需要,可以使用onchange。@jfriend00那么当我要添加行时,将有数字2,对吗?所以2号我将选择BBB作为名称,选择III作为类,然后当我在类上选择III时,我得到的点将出现在中。有两个数据具有不同的点,1号和2号分别为100.00和80.00。不,我的问题是,第二名的结果点是80.00,它不完全出现在第二名,但它确实出现在第一名。因为我们知道排名第一的分数是100.00。那么如何修复每个数据或数字都有自己的点数?@jfriend00我希望你明白我的意思!谢谢@AmGates的帮助。我试过你的代码,它给我的值是1。当我打算添加行时,得到的值是1而不是2。我想从1、2、3、4等等中获取它,而改为:tbl=document.getElementById'table';i=tbl.行数.长度;它给我的长度顺序是1,2,3,4,依此类推。但是,当我将长度为的变量I添加到here document.getElementByIdpoint+I.innerHTML=xmlhttp.responseText;`根据我添加的行数,点不显示为点1、点2或点3。你知道吗?警报结果为空。我想知道,为什么我只通知var r=tbl.rows.length它得到了值,却没有得到文档中的值。getElementByIdpoint+r?==aDo您的html文档中有具有正确ID的元素吗?是的,我有。这也是具有相同ID的元素>。
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);
}
<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);
}