从在HTML / PHP中动态生成的tr元素中获取Id

时间:2014-05-04 08:15:35

标签: javascript html

您好我正在使用Web系统,我有一个脚本,显示有关公司设备库存的信息。此信息存储在数据库(MySQL)中,并使用HTML表格显示先前存储在PHP变量中的信息,该变量保存查询ResultSet并使用While循环以检索每个值并将其显示在桌子。

此时一切都很完美。

但是我添加了一个搜索按钮,用户可以在其中输入要搜索的设备ID。然后,如果ID存在,我想将RED设置为刚刚找到的ID的行的边框。

问题在于,当我尝试获取要更改的行的ID时,我从Javascript中获取null,这会更改该行的style属性。

我使用While循环生成HTML表,我刚刚声明了2行:

  • 一个表格的标题
  • 一个显示数据。

我尝试动态生成第二行的ID(例如,如果有3台计算机,则会有3行具有不同的ID,并且这些ID基于存储在名为变量的变量中的当前ID $ C1)。

然后我只是调用JS发送一个具有要搜索的ID的变量(该ID应该与行的ID相同)并将该行的Background设置为RED。但我得到了错误"无法读取属性' style' of null"。我搜索过,我发现的唯一一件事就是我必须等到文档加载然后调用Js才能搜索元素,但它没有工作。

PHP

    <table>
            <tr>
                <td>ID del Equipo</td>
                <td>Tipo</td>
                <td>Marca</td>
                <td>Modelo</td>
                <td>Procesador</td>
                <td>Memoria Ram</td>
                <td>Detalles</td>
                <td>Area</td>
            </tr>
            <?php
            $i = 0;
            while ($i<$num) 
            {
                $c1 = mysql_result($result, $i, "ID del Equipo");
                $c2 = mysql_result($result, $i, "Tipo");
                $c3 = mysql_result($result, $i, "Marca");
                $c4 = mysql_result($result, $i, "Modelo");
                $c5 = mysql_result($result, $i, "Procesador");
                $c6 = mysql_result($result, $i, "Memoria RAM");
                $c7 = mysql_result($result, $i, "Detalles");
                $c8 = mysql_result($result, $i, "Area");
            ?>
            <tr id="<?php echo $c1; ?>">    
                <td><?php echo $c1;?></td>
                <td><?php echo $c2;?></td>
                <td><?php echo $c3;?></td>
                <td><?php echo $c4;?></td>
                <td><?php echo $c5;?></td>
                <td><?php echo $c6;?></td>
                <td><?php echo $c7;?></td>
                <td><?php echo $c8;?></td>
            </tr>

            <?php 
             $i++;
            }
            ?>
        </table>
</section> //The end of the section where the info is displayed

        <script type="text/javascript">
        remarcarBusqueda(<?php echo $_SESSION['VALOR_BUSQUEDA'];?>);
        //The $_SESSION ['VALOR_BUSQUEDA'] holds the value (ID) of the 
        //element to search that has been already checked in another script
        </script>

的JavaScript

function remarcarBusqueda(elemento)
{
    rem = document.getElementById(elemento);
    rem.style.background="red";
} 

备注:

  • 我只得到空错误

所以我希望你们能帮助我。感谢。

P.S:我来自墨西哥,这就是var名称是西班牙语的原因,抱歉:)

更新以下是HTML输出:

http://imgur.com/Y262vCe

更新#2 如果我将tr ID更改为 tr id =&#34;行&#34; ,例如,无论我输入什么值(1 ,4或7),第一行总是变红,我没有得到空错误。当然,我不会将任何参数发送给JS,并且在行 document.getelementById 中我将&#34; Row&#34;作为参数。

1 个答案:

答案 0 :(得分:-1)

它是$c1是数值吗?

尝试使用此方法修复:

<tr id="myTr<?php echo $c1; ?>">
...
<script type="text/javascript">
...
    remarcarBusqueda('myTr' + <?php echo $_SESSION['VALOR_BUSQUEDA'];?>);
</script>

注意:

在HTML DOM中,所有对象都不应该使用数字作为id,因为Javascript无法访问它。