【发布时间】:2014-07-30 14:19:44
【问题描述】:
如果您需要代码 - 我会发布它,但似乎问题不在代码中。
我做了菜单。点击菜单后 - 子菜单被下载。在此之后,我将更改 CSS 以为打开部分及其下载的子菜单应用新样式。但是这个 CSS 不起作用。如果我在检查器窗口中添加后复制此动态内容并直接粘贴为 html,并将更改的 CSS 作为菜单的新部分 - 刷新页面后的这个新部分在应用所有样式时都可以正常工作。如果我在动态添加内容后使 javascript 更改 CSS - 新样式不起作用。通过 setAttribute 可以毫无问题地更改他 - 但不起作用(正如我之前所说 - 代码很好,因为在刷新页面后复制粘贴此部分后,所有样式都可以正常工作。我在哪里可以找到错误?
部分代码
document.getElementById("menu_item_1235").parentNode.setAttribute("class", "adm-sub-submenu-block adm-sub-submenu-open");
var xmlDoc = http_request.responseXML;
var nodeLength = xmlDoc.getElementsByTagName("child");
for (var i = 0; i < nodeLength.length; i++) {
document.getElementById("menu_item_1235").nextSibling.appendChild(document.importNode(xmlDoc.getElementsByTagName("child")[i].childNodes[0], true));
}
屏幕截图:
i.stack.imgur.com/1Haxs.png i.stack.imgur.com/3zbxX.png
当我采用这种方式时,CSS 也可以部分工作
var string = (new XMLSerializer()).serializeToString(nodeLength[0].childNodes[0]);
document.getElementById("menu_item_1236").nextSibling.innerHTML = string;
document.getElementById("menu_item_1236").parentNode.setAttribute("class", "adm-sub-submenu-block adm-sub-submenu-open");
只有部分部分被突出显示:
【问题讨论】:
-
你明白了,javascript 在当前可用的元素上设置内联样式,而不是在以后添加的任何未来元素上。
-
"it seems problem is not in code"- 您是否建议您的代码必须是正确的并且问题必须是网络浏览器?祝你好运。 -
你能再描述一下吗?在我的情况下可以这样做吗?我在添加新内容后应用了新的 CSS 规则 - 不起作用。我在下载新内容之前应用了新的 CSS 规则 - 也没有任何效果。我的风格不是内联风格——我在这部分的风格是在 CSS 部分。 class="old_style" 我更改为 class="new_style"。例如。如果我制作相同的菜单但只有隐藏的子菜单 - 在更改课程后 - 菜单打开。
-
大卫,我写道 - 如果我在通过 ajax 上传后复制 HTML 的这一部分 - 并将 HTML 粘贴为菜单的新部分 - 一切都适用于新样式
标签: javascript html css ajax