Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么javascript会关闭页面标记?_Javascript_Html_Css - Fatal编程技术网

为什么javascript会关闭页面标记?

为什么javascript会关闭页面标记?,javascript,html,css,Javascript,Html,Css,我有一个简单的js,它根据一个变量输出html if (icAnalytics == "1"){//Analytics $("#anal22").html("<a class='test1 test2 test33' href=/dashboard/site_sum.asp?id=application>Analytics</a>"); }; if (icPermissions >= "1"){//Publishers

我有一个简单的js,它根据一个变量输出html

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 {
 };
if(icAnalytics==“1”){//Analytics
$(“#anal22”).html(“”);
};
如果(icPermissions>=“1”){//publisher
$(“#pub22”).html(“”);
}
如果(icPermissions==“2”){//Admins
$(“#admin22”).html(“”);
}
否则{
};
问题是,当我将html添加到一个“li”时,它会自动关闭“li”,即使我没有将该代码添加到其中。我无法真正更改页面的布局,因为我没有访问权限。在从javascript插入html后,有没有办法防止li关闭


注意-这有点复杂。pub22 li是第一个,然后anal22和admin22嵌套并具有不同的烫发。因为它们是嵌套的,所以我想让李打开。也许我把这件事弄得太难了。

只要你用JavaScript向DOM中添加任何HTML,web浏览器就会尝试解析该HTML。如果您创建一个
  • 元素而不关闭它,浏览器会像“哇,那不是有效的HTML;我会修复它”,它会自动关闭标记

    但所有的希望都没有失去!不要在编写DOM时将代码添加到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
    
    var myHtml=“
  • ” myHtml+=“诸如此类,这是一些内容”; myHtml+=“
  • ”; $(“#someElement”).html(myHtml)//我们只是在完成编写之后才将html添加到DOM中
    jQuery的
    .html
    使用JavasScript的
    .innerHTML


    .innerHTML
    将节点插入DOM。根据定义,节点必须是有效的标记。因此,浏览器正在动态地纠正您的错误标记。

    您需要做的是:

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

    在这里,您可以创建
  • ,向其中附加一些
    元素,然后最后将
  • 附加到DOM中的某个现有元素。以这种方式创建元素并在准备激活时将其附加到DOM是jQuery的关键功能之一(事实上,这是基本jQuery函数的一部分)。

    在DOM中插入部分形成的元素的用例是什么?为什么在将节点应用于DOM之前不完全创建节点?您可能还应该养成在javascript字符串中编写HTML时保持一致的习惯。我建议使用(或多或少)行业标准的方法,在元素属性周围使用双引号,在javascript中对实际字符串使用单引号。@MikeBrant-这是针对一个供应商网站,我将其放入html中,动态地反映某人是否是管理员,基于js变量。除了关闭li标记外,一切都正常。@blankip仍然无法回答为什么要在DOM中插入类似
  • (iteself认为它不是有效的元素)的内容。为什么不同时添加
    ?@MikeBrant-我添加了一个注释。我需要添加的另一个html嵌套在该li中。我添加了一个关于嵌套的注释。如果我能把整个脚本加进去,我会的。但是,其他两个变量嵌套在这个函数中。因此,当它关闭时,它会关闭下拉菜单。@blankip这是您的逻辑问题,而不是
    .html
    。这是工作完全按照设计。正如oxguy3所指出的,您需要做的是在将嵌套注入DOM之前完成所有嵌套。但如果我能使用逻辑,我会让php解析我的管理员。事实上,我并没有改变供应商菜单代码的结构。我已经创建了很多js,将html添加到供应商站点,我想这是我第一次出现嵌套问题。