1

我想不出这个问题的标题应该是什么,对不起!这是我正在编写的 php 页面的代码:

    echo '<table>';

    $conn = dbconnect();
    $query = 'SELECT * FROM validUploads';
    $result = @$conn->query($query);
    if($result)
    {   
        while(true)
        {   $data = $result->fetch_assoc();
            if(!$data)
            {   break;
            }
            else
            {   $id = $data['id'];
                $college = $data['college'];

                echo<<<__REG_DATA
                    <tr>
                        <a name="ds{$id}"></a>
                        <div id="ds{$id}">
                            <td>{$id}</td>
                            <td>{$college}</td>
                            <td><a href="download.php?dId={$id}"></a></td>
                        </div>
                    </tr>
__REG_DATA;
            }
        }
    }

echo '</table>';

在浏览器中运行时,源代码按预期很好地显示了打印的详细信息,例如:

<tr>
    <a name="ds1"></a>
    <div id="ds1">
    <td>1</td>
    <td>College1</td>
    <td><a href="download.php?dId=1"></a></td>
</tr>
.
.

但是当我使用萤火虫检查第 7 行的元素时,它显示如下:

<div id="ds1"> <a name="ds1"></a> </div>
<div id="ds2"> <a name="ds2"></a> </div>
<table>
<tr>
    <td>1</td>
    <td>College1</td>
    <td><a href="download.php?dId=1"></a></td>
</tr>
<tr>
    <td>2</td>
    <td>College2</td>
    <td><a href="download.php?dId=2"></a></td>
</tr>

这是一个问题,因为我要使用 css3 突出显示表中的锚定行

:target
{   ....
}

是的,当请求一个 url: http ://mysite.com/index.php#ds2 时,它会滚动到表格的顶部,而不是第 2 行,这与检查元素的输出一致!

有人可以解释这种行为以及如何纠正它吗?

4

1 回答 1

1

生成的 HTML 无效(只有<td><th>元素可能是元素的子<tr>元素)。浏览器尝试从错误中恢复。结果就是您在 DOM 检查器中看到的内容。

始终使用验证器测试您的标记。

为了获得您想要的效果,您可能应该这样做:

<tr id="ds1">
  <td>1</td>
  <td>College1</td>
  <td><a href="download.php?dId=1"></a></td>
</tr>
于 2012-11-26T13:06:32.573 回答