好吧,所以基本问题是设置div元素的innerHTML,我的字符串中的任何html标记在除Firefox之外的所有主流浏览器中都被剥离(而不是显示)。现在对于catch来说,当页面第一次加载时不会发生,它只发生在部分回发(除非它的Firefox,然后它总是有效)。使用Javascript的innerHTML的问题
我试图运行一个脚本(实际上是通过ScriptManager创建并从代码后面添加的)来为某些已有的html元素添加一些html元素(带有事件处理程序)。我知道脚本始终在运行,即使在我遇到问题时也是如此,因为我可以对现有元素的html进行核对或设置一些文本。我甚至可以使用文本和标记,但标记不会在文本显示时显示,除非文本位于标记内。所以:
someElement.innerHTML = “等等等等等等” - 作品
someElement.innerHTML = “<br/><br/>Blah blah blah<br/><br/>
”
等等等等等等显示,但没有休息
someElement.innerHTML = “<p>This will disappear</p><div>So will this</div>
”
所有这些文字都会随标记一起消失。哦,我看着做这个'标准'的方式,即document.createElement等,但我有完全相同的问题。
如果你需要/想知道其他任何问题。
编辑:当我说主要的浏览器,特别是我的意思是:Safari浏览器4.0.3,Chrome浏览器3.0.195.27,和IE 8.0.6
完整的JavaScript(有关此功能)。如果有格式错误是因为这实际上是C#中的一个字符串,所以出现了一堆时髦的逃脱废话,我试图删除为清晰起见。
var overflowEls = getElementsByClass("descriptionBox");
for (var i = 0; i < overflowEls.length; i++)
{
if (checkOverflow(overflowEls[i]))
{
var html = overflowEls[i].innerHTML;
overflowEls[i].innerHTML = overflowEls[i].innerHTML = "<div class="videoFeedDescriptionButtons" onclick="expand(this);">+</div><br/><div onclick="collapse(this);" class="videoFeedDescriptionButtons">-</div>" + html;
}
}
周围的HTML,牢记它正从YouTube的Feed提取,然后由.NET Repeater控件生成:
<td valign="top" style="margin: 5px 5px 5px 5px;height:auto;">
<div class="descriptionBox" style="max-height:100px; overflow:hidden;" >
<b>
THE WORLDS BIGGEST PLANES!! by kieran smith</b><br />
<br />
by Antonov (ASTC). It was designed for the Soviet space program as a replacement for the Myasishchev M-4 'Bison' for the purpose of carrying the Energia rocket boosters and to also be able to carry the Buran space shuttle in piggy-back mode much the same as the American Shuttle Carrier Aircraft.The An-225 first flew on 21 December, 1988. Only one An-225 is currently in service. It is commercially available for carrying ultra heavy and/or oversize freight. It can carry up to 227 metric ...<br />
</div>
<a id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_lnView" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Repeater1$ctl01 $lnView','')">View</a> <a id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_lnAdd"
href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Repeater1$ctl01$lnAdd','')">Add</a>
<br />
你确定你没有脚本运行插入后,即清除div或将其替换为无。如果您在插入后直接添加警报(someElement.innerHTML)(或者更好的FF上的console.log),那么它会显示什么? – robjmills 2009-10-15 22:56:42
请显示代码。 – 2009-10-15 22:57:59
你可以发布“someElement”在里面的周围的HTML吗? – 2009-10-15 22:58:03