呵呵,这个问题很有趣
先指出代码中的一些错误
js-3中
var str=document.getElementById("test").innerHTML.toString(); //缺少了红色部分document.getElementById("test").innerHTML 是对象,但加了.toString()就是字符串了当你把str给alert出来就明白咋回事了,那个<b>是不是变成别的了?呵呵,asp.net都是这样处理的,明显不符w3c,但没办法

解决方案 »

  1.   

    首先告知楼主所有indexOf(" <b>",0);函数都丢了str
    应该是str.indexOf(" <b>",0);
      

  2.   

    经过我的多次测试发现以下几个问题:
    Firefox工作正常,所以怀疑是IE的本身的问题。
    <div id="test">这是一<b>个截断 </b>字符串程序的测试 </div> var str=document.getElementById("test").innerHTML; 
    var num1=str.indexOf("<b>",0);//Firefox显示num1的值为3; 
    alert(num1);
      

  3.   

    在Firefox中一个空格也算一个字符,如果将str.indexOf("<b>",0);
    的"<b>"加上一个空格,Firefox显示num1的值为-1
    为方便起见我这里用@代表空格。
    其他情况如下代码值所示:
    <div id="test">这是一@<b>个截断 </b>字符串程序的测试 </div>var str=document.getElementById("test").innerHTML; 
    var num1=str.indexOf("<b>",0);//Firefox显示num1的值为4; 
    alert(num1);<div id="test">这是一@<b>个截断 </b>字符串程序的测试 </div>var str=document.getElementById("test").innerHTML; 
    var num1=str.indexOf("@<b>",0);//Firefox显示num1的值为3; 
    alert(num1);<div id="test">这是一@<b>个截断 </b>字符串程序的测试 </div>var str=document.getElementById("test").innerHTML; 
    var num1=str.indexOf("@@<b>",0);//Firefox显示num1的值为-1; 
    alert(num1);楼主好好琢磨一下,就会明白的,祝福楼主!
      

  4.   

    你说得对,但是就算加了str还是返回-1,我用的IE8
      

  5.   


    的确此代码在Firfox上工作正常,我用的是IE8,怎样才能让IE系列的浏览器也工作正常呢?
      

  6.   

    大小写的问题,ie中标签为大写。str.toLowerCase().indexOf();
      

  7.   

    LS说的没错,IE8会遇到innerHTML会自动把<b>转换成<B>,而Firefox则保持不变
    感谢LS各位的回答,特别是lm4242的测试建议
    散分~