【问题标题】:How to get value in accordance with the sequence ID name of the onchange event?如何根据onchange事件的序列ID名称取值?
【发布时间】:2012-01-29 07:08:54
【问题描述】:

有一个表的字段包括添加行按钮。我是使用onchange事件从其他表调用数据,所以当我在选项框中选择一个选项时可以自动获取之前已经选择的值(do not need input the value manually). 然后我在同一个表中添加行,然后我在框选项中选择一个选项并从第一个获得不同的值,the problem is the values ​​obtained appear in the first box, not in the second box.

对于 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 名称“point”更改为“point2”,则该值将出现在第二个框中,但第一个框中的值缺失。

所以我尝试循环获取 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 等。 我制作的脚本有错误吗?需要大帮助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);
}

【问题讨论】:

  • 你能把你的问题简化为一个更简单的形式吗?我无法理解你实际上在问什么。请提供简单的步骤来描述您在网页上所做的事情、调用了哪些代码以及您期望但没有得到的结果。
  • @jfriend00 好的,这是示例:(如您在表格中看到的)。否 1 我会选择 AAA 作为名称,然后选择 II 作为类,当我在类上选择 II 时,我会在 100.00 中自动获得一个点(这里会出现这个点) 没有我手动输入值(当然,如果它想要发生,可以使用 onchange)。
  • @jfriend00 那么当我想添加行时会有数字 2 对吗?所以No 2我会选择BBB作为名字,选择III作为班级,然后当我在班级选择III时,我得到的点会出现在 80.00(这里)。有两个不同点的数据,100.00 和 80.00 分别代表 1 号和 2 号。Nuh,我的问题和问题是 2 号包含的结果点,是 80.00 它不完全出现在第 2 位,但它确实出现在第 1 位。因为我们知道我们在第 1 位得到的点是 100.00。那么如何解决每个数据或数字都有自己的点呢?
  • @jfriend00 希望你明白我的意思!

标签: php javascript onchange xmlhttprequest


【解决方案1】:

在您的代码中,您将表格的 ID 指定为 "table",然后您访问了 "document.getElementById('table')",然后您就拥有了使用 "tbl.length" 导致 null 或没有值。这里的问题是,当您使用 getElementById 时,您没有属性 "length"。为了访问表的数量,请使用以下

<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);
}

希望这会有所帮助。

【讨论】:

  • 感谢@AmGates 的帮助。我试过你的代码,它给了我值,是 1。当我打算添加行时,我得到的值是 1 而不是 2。我想从 1、2、3、4 等中获取它。
  • 我改为:&lt;table id="table"&gt; tbl = document.getElementById('table'); i = tbl.rows.length; It gives me length sequentially (1,2,3,4 so on). BUT I still have a problem, when I add the variable i (which has the length) to here document.getElementById("point"+ i).innerHTML = xmlhttp.responseText;`“point”不显示为“point1”或“point2”或“point3”(取决于我添加了多少行)。有什么想法吗?
  • 警报结果为空。我想知道,为什么我只提醒 var r = tbl.rows.length 它得到了值,但没有得到 document.getElementById("point"+r)? (=,=)"一个
  • 您的 html 文档中的该元素是否具有正确的 ID?
  • 是的,我有。这也是具有相同 ID 的元素 > &lt;div id="point" name="point"&gt;&lt;/div&gt;
猜你喜欢
  • 2021-11-26
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多