网页在这里: http://develop.macmee.com/testdev/
我在谈论你点击的时候?在左边,它应该打开一个包含更多内容的盒子。它在IE以外的每个浏览器中都可以实现!
function question()
{
$('.rulesMiddle').load('faq.php?faq=rules_main',function(){//load page into .rulesMiddle
var rulesa = document.getElementById('rulesMiddle').innerHTML;
var rules = rulesa.split('<div class="blockbody">');//split to chop off the top above rules
var rulesT = rules[1].split('<form class="block');//split to chop off below rules
rulesT[0] = rulesT[0].replace('class=','vbclass');//get rid of those nasty vbulletin defined classes
document.getElementById('rulesMiddle').innerHTML = rulesT[0];//readd the content back into the DIV
$('.rulesMain').slideToggle();//display the DIV
$('.rulesMain').center();//center DIV
$('.rulesMain').css('top','20px');//align with top
});
}
答案 0 :(得分:6)
IE将innerHTML内容转换为大写,因此您可能无法以这种方式拆分字符串,因为字符串操作区分大小写。通过运行
检查内容的真实含义alert(rulesa);
答案 1 :(得分:4)
安德里斯是对的。而这还不是全部。它还会丢弃属性中的引号。
完全不可靠对innerHTML
获得的字符串格式做出任何假设;浏览器可以以各种形式输出它 - 在IE的情况下,其中一些甚至不是有效的HTML。你找回最初被解析的相同字符串的可能性非常低。
一般来说:HTML-string-hacking是一种浪费时间的浪费。改为使用节点对象修改HTML元素。你似乎在使用jQuery,所以你有很多实用功能来帮助你。
在任何情况下,您都不应将整个HTML页面加载到#rulesMiddle
。它包括一大堆脚本和样式表以及其他无法进入的标题废话。 jQuery允许您选择要插入的文档部分;你似乎只想要第一个.blockbody
元素,所以选择:
$('#rulesMiddle').load('faq.php?faq=rules_main .blockbody:first', function(){
$('#rulesMiddle .blockrow').attr('class', '');
$('.rulesMain').slideToggle();
$('.rulesMain').css('top', '20px');
});
答案 2 :(得分:0)
当我单击该按钮时,我的IE调试器会在您的脚本上引发错误。在这一行:
var rulesT = rules[1].split('<form class="block');//split to chop off below rules
IE停止处理Javascript并说'1' is null or not an object
答案 3 :(得分:0)
不知道你是否解决了它,但它在我丑陋的IE上工作......(它是一个v8)
顺便说一句:这是我,或者说,打开的寡妇真的,真的,真的在放慢那个平台的速度吗?