为什么td中缺少某些字符?

时间:2018-02-20 10:46:14

标签: html html-table

我在使用html时遇到了一些麻烦。如果我写一个包含<>的字符串有时这些角色之间缺少什么。

<tr>
  <td> User Name:</td>
  <td>abcd<efgh>ilmn</td>
</tr>
<br>
<tr>
  <td> User Name:</td>
  <td> <Input Type="text" value="abcd<efgh>ilmn"></td>
</tr>
<br>
<tr>
  <td> User Name:</td>
  <td>abcd<1efgh>ilmn</td>
</tr>
<br><tr>
  <td> User Name:</td>
  <td>abcd<!efgh>ilmn</td>
</tr>

这就是我获得的:

用户名:abcdilmn
用户名:abcdilmn
用户名:abcd&lt; 1efgh&gt; ilmn
用户名:abcdilmn

这里有一个小提琴: https://jsfiddle.net/2txjmf6o/7/

3 个答案:

答案 0 :(得分:2)

它将它们视为标签。如果你想看到它们,你应该逃避它们。

<td>abcd&lt;efgh&gt;ilmn</td>

答案 1 :(得分:1)

默认情况下,所有浏览器都会将这些字符解析为代码块,如果您想使用这些字符,则可以使用其utf8代码。检查下面更新的代码段。

&#13;
&#13;
<tr>
  <td> User Name:</td>
  <td>abcd&lt;efgh&gt;ilmn</td>
</tr>
<br>
<tr>
  <td> User Name:</td>
  <td> <Input Type="text" value="abcd<efgh>ilmn"></td>
</tr>
<br>
<tr>
  <td> User Name:</td>
  <td>abcd&lt;1efgh&gt;ilmn</td>
</tr>
<br><tr>
  <td> User Name:</td>
  <td>abcd&lt;!efgh&gt;ilmn</td>
</tr>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您的问题是,文本被识别为标签。当您查看其余代码时,您会注意到<td><efgh>具有相同的语法。

仅仅因为没有这样的标签,这并不意味着它不作为标签处理。忽略未知标签实际上是一项功能,因此浏览器可以使用较新的标准呈现HTML而不会出现问题。因此,想象一个旧浏览器只是因为它不知道它而逐字显示<audio>标签。这将比不显示它更糟糕。

解决方案是使用实体&lt<&gt;转义特殊字符。

以下是适合使用实体的示例。

&#13;
&#13;
<tr>
  <td> User Name:</td>
  <td>abcd&lt;efgh&gt;ilmn</td>
</tr>
<br>
<tr>
  <td> User Name:</td>
  <td> <Input Type="text" value="abcd<efgh>ilmn"></td>
</tr>
<br>
<tr>
  <td> User Name:</td>
  <td>abcd&lt;efgh&gt;ilmn</td>
</tr>
<br><tr>
  <td> User Name:</td>
  <td>abcd&lt;!efgh&gt;ilmn</td>
</tr>
<br>
&#13;
&#13;
&#13;

使用上面的&lt; and &gt;检查