【发布时间】:2012-08-30 22:27:39
【问题描述】:
使用 javascript 我在运行时添加子元素。我的代码是,
(function () {
var divElmt = document.createElement('div');
var leftPane = document.getElementById('LeftHandPannelContent')
divElmt.id = "MyPanel";
divElmt.setAttribute('runat', 'server');
divElmt.setAttribute('style', 'display:none');
var htmlTag = "<x:CustomTag runat=\"server\" id=\"sample\">";
divElmt.innerHTML = htmlTag;
leftPane.appendChild(divElmt);
}());
上面的方法是一个自调用函数,我使用的Tag是一个自定义标签,它的前缀是在aspx页面顶部添加的。
问题是,在运行时,innerHTML 有
"<?XML:NAMESPACE PREFIX = x/><x:CustomTag id="sample" runat="server"/>"
属性也以不确定的顺序排列。
可能是什么问题?如何在 html 页面中动态添加自定义标签?
编辑:
当我在设计时添加相同的自定义标签时,它工作正常。此外,如果我使用 innerText 而不是 innerHTML,则文本会正确更新。但我需要将其呈现为 html 内容。
【问题讨论】:
-
好像你在混合东西。
<x:、runat等是您放入 asp.net 后端的内容。 JavaScript 不知道这些东西,也不像 asp.net 那样解析它们。 -
“x”命名空间是否在您的 html 代码中定义?另外:您是否尝试过 InnerText 而不是 InnerHTML?
-
@JoSo: ya "x" 命名空间是在 aspx 页面的顶部定义的。我尝试了 innerText,那里 >xml> 没有被附加并显示为文本。
-
html 页面不关心 aspx 中的命名空间定义,因为 javascript 在客户端执行,并且 asp 不会将其内部工作暴露给客户端。我相信你想要做的是用javascript添加一些东西,然后让asp重新解释页面。这根本行不通。
-
+1 @JoSo:哦,是的,你的仪式。 aspx 不会重新解释它。那我如何实现这种情况?有什么想法吗?
标签: javascript asp.net html html-parsing