为什么javascript关闭页面标签?

时间:2015-08-10 18:55:34

标签: javascript html css

我有一个基于供应商变量输出html的简单js

if (icAnalytics == "1"){//Analytics
    $("#anal22").html("<a class='test1 test2 test33' href=/dashboard/site_sum.asp?id=application>Analytics</a>");
        };

if (icPermissions >= "1"){//Publishers
            $("#pub22").html("<a tabindex='0' href=/admin/default.asp class='ubermenu-target ubermenu-target-with-icon ubermenu-item-layout-default ubermenu-item-layout-icon_left'><i class='ubermenu-icon fa fa-lock'></i><span class='ubermenu-target-title ubermenu-target-text'>Pub</span></a>");
            }

if (icPermissions == "2"){//Admins
        $("#admin22").html("<a class=aTop2 href=/system/default.asp>Admin</a>");
        }

else {
 };

问题是当我将html变为“li”时 - 所以<li id="pub22">它会自动关闭“li”,即使我没有将该代码添加到其中。我无法真正改变页面的布局,因为我无法访问它。从javascript插入html后,有没有办法让li关闭?

注意 - 这有点复杂。 pub22 li是第一个,然后anal22和admin22嵌套并具有不同的烫发。由于它们是嵌套的,我想让李开放。也许我太难了。

3 个答案:

答案 0 :(得分:1)

只要使用JavaScript将任何HTML添加到DOM,Web浏览器就会尝试解析该HTML。如果您在不关闭它的情况下创建<li>元素,那么浏览器将会像&#34;哇,那是无效的HTML;我只是解决这个问题&#34;它会自动关闭标签。

但所有的希望都不会丢失!不是在编写代码时将代码添加到DOM中,而是将其全部存储在字符串中,只有在完成后才将字符串添加到DOM中。

以下是一个例子:

var myHtml = "<li>"
myHtml += "blah blah this is some content";
myHtml += "</li>";
$("#someElement").html(myHtml); //we add the html to the DOM only now that we're done writing it

答案 1 :(得分:1)

您需要执行以下操作:

$element = $('<li id="pub22">...</li>');
$element.append('<a id="anal22" href="...">...</a>');
$element.append('<a id="admin22" href="...">...</a>');
$element.appendTo('#someContainerElement');

在此创建<li>,向其添加一些<a>元素,然后最终将<li>附加到DOM中的某个现有元素。以这种方式创建元素并在准备好激活时将它们附加到DOM是jQuery的关键特性之一(实际上这是基本jQuery函数的一部分)。

答案 2 :(得分:0)

jQuery的.html使用JavasScript的.innerHTML

.innerHTML将节点插入DOM。根据定义,节点必须是有效标记。所以浏览器正在纠正你的坏标记。