0

我有一个脚本可以更改输入字段的值:

    <script language="javascript">
    function klientid() {
    var getid = document.getElementById("getidfromsearch");//results
    var klid = document.getElementById("idklienta"); //input field
    if(getid != "0") {
    klid.value = getid.textContent;
    }
    </script>

一个搜索引擎,这是打印结果的方式:

    <?php
    while($rowmilion = mysqli_fetch_array($resultmilion)) {
    ?>
    <a href="javascript:klientid()">
    <table>
    <tr>
    <td style="font-weight:bold; width: 160px; text-align:right;">ID:</td>
    <td style="width:200px;" id="getidfromsearch"><?php echo $rowmilion['id']; ?></td>
    </tr>
    </table>
    </a>
    <?php } ?>

现在,当结果只有一条记录并且我单击链接时,它确实会很好地更改输入字段的值。

当结果包含多个记录时,无论我单击哪个链接,它都会始终从第一条记录中获取值,例如:

ID: 100
ID: 200
ID: 300

所以当我点击第三个位置时,它仍然会将输入字段的值更改为 100 而不是 300。

我怀疑,这是因为所有记录都获得相同的“ID”......但是,我仍然无法让它工作。

4

1 回答 1

1

您应该为每个结果提供一个唯一的 ID,否则它会搞砸您的 getElementById 搜索。

你的 JS 代码:

<script language="javascript">
    function klientid(domElmtId) {// ** I added a parameter
        var getid = document.getElementById(domElmtId);//results
        var klid = document.getElementById("idklienta"); //input field
        if(getid !== null) {// ** This is better
            klid.value = getid.textContent;
        }
    </script>

你的 PHP 代码

<?php
    $count = 0;//** I added a variable to give each result a different ID
    while($rowmilion = mysqli_fetch_array($resultmilion)) {
    ?>
    <a href="javascript:klientid('result<?php echo $count; ?>')">
    <table>
    <tr>
    <td style="font-weight:bold; width: 160px; text-align:right;">ID:</td>
    <td style="width:200px;" id="result<?php ?>"><?php echo $rowmilion['id']; ?></td>
    </tr>
    </table>
    </a>
    <?php 
    $count += 1;//** to make different IDs
} ?>
于 2013-01-20T23:01:11.810 回答