JavaScript和错误“;未打开元素的结束标记";

JavaScript和错误“;未打开元素的结束标记";,javascript,validation,Javascript,Validation,我对验证这样的代码有问题 function show_help_tip(event, element) { var $e = $(element); var pos = $e.offset(); $('.body-balloon',$help_tip_div).html($(' <p>&nbsp;</p> ').html(element.getAttribute('title'))); $help_tip_div.css({position

我对验证这样的代码有问题

function show_help_tip(event, element) {

  var $e = $(element);

  var pos = $e.offset();

  $('.body-balloon',$help_tip_div).html($(' <p>&nbsp;</p> ').html(element.getAttribute('title')));

  $help_tip_div.css({position:'absolute',top:530,left:pos.left+$e.width()-20}).show();

}
函数显示帮助提示(事件、元素){
变量$e=$(元素);
var pos=$e.offset();
$('.body balloon',$help\u tip\u div).html($('

').html(element.getAttribute('title')); $help_tip_div.css({position:'absolute',top:530,left:pos.left+$e.width()-20}); }
未打开的元素“p”的结束标记


怎么了?

不需要结束标记。您可以使用
,如果您是OCD或使用XHTML,我认为您可以使用

,但该标记没有任何内容,因此没有结束标记

您需要退出
/
以停止它终止脚本元素

"<\/p>"
“”
验证器应该(通过几个步骤)链接到

这是SGML的一个奇怪之处,在SGML中,定义为包含CDATA的元素(例如脚本元素)将被任何结束标记终止,但如果该结束标记与开始标记不匹配,则该元素无效


在JavaScript字符串中,
“/”
“\/”
是等价的,但在HTML中,

不是等价的,因此这可以避免在脚本中出现(对HTML解析器而言)作为结束标记的内容。

在HTML的前两个版本中,
标记是分隔符,但是当HTML被定义为SGML时,它就变成了一个包含内容的元素(在那之前你不能用SGML验证器来验证它,所以这在这里不是问题!)。我不想追溯到更早的时候,但它在1995年被定义为在HTML2中包含内容,所以我很高兴你还记得很久以前。