JS:
function VerifyUsernameState(values) {    $I("username_info").innerHTML = cue[0][8];
    if (CheckTxtAJAX("username") != "0") {
        return 6;
    }
    return 0;
}
上面的$I("username_info").innerHTML = cue[0][8];
为什么会在IE下不起作用,在FIREFOX正常,,谁知道咋回事呢? 谢谢

解决方案 »

  1.   

    把$I("username_info").innerHTML = cue[0][8];换成$I("username_info").innerHTML = "aaa";再分析一下。
      

  2.   

    没用的, cue[0][8] 本来就 是一个字符串。
      

  3.   

    alert(cue[0][8]);//看看能弹出什么,如果什么都没有,说明cue[0][8]不包含任何字符!$I()是一个获取对象的函数?还是其他什么?如果是一个原生方法就有innerHTML,否则像JQ是不具有该属性的,需要转化为普通DOM对象才具有。
      

  4.   

    没问题,我单独把<script>$I("username_info").innerHTML = cue[0][8]; </script> 放到页面最后可以的。cue[0][8] ="<I style='width:20px; height:16px; font-size:0px; float:left; background:url(images/loading0.gif) 2px 0px no-repeat'></I>正在查找..."我只是想让它在使用AJAX查找前 先在层中给个正在查找的提示。下面是简化的 CheckTxtAJAX函数:
    function CheckTxtAJAX(objid) //判断控件 通过XMLHTTP对象到相应页面 返回相应检查信息
    {
        if (objid == "username") {
            url = "serv/CheckUName.aspx?rd=" + Math.random() + "&uname=" + escape($I("username").value);
        }
        xmlhttp.open("GET", url, false);
        xmlhttp.send(null);
        try {
            eval("var x = " + xmlhttp.responseText);
            //xmlhttp = new XMLHttpRequest();
            return x;
        } catch(e) {
            return null;
        }
    }
    CheckUName.aspx页面中已经有个循环等待的FOR语句,方面查看效果的。
    我想可能是IE下 IF语句里是不是优先调用函数,忽略单行语句导致的。谁知道呢?
      

  5.   

    如果放页面最底部可以运行,那么最可能的是加载顺序的问题你放在window.onload事件中调用或者把调用js函数的代码放页面最后面
      

  6.   

    luxu001207
    你说的可能是对的,IE就不按照常理出牌,FIREFOX里都正常,,但是你说调整位置 这个恐怕我得把所有代码都改了,,,因为这JS文件里 是对整个页面的表单进行效验的,已经形成了一个顺序结构了,现在情况不允许单独把这一个函数移动位置。
      

  7.   

    你也试过$I("username_info").innerHTML = cue[0][8];这句话本身没有错误,那八成错误应该在CheckTxtAJAX里面了。
    关于xmlhttp.responseText,你刚刚send,这个值肯定应该为空。
    感觉一般都是在xmlhttp.onreadystatechange指向的函数里面处理返回回来的xml。
      

  8.   

    哦,你的ajax代码没有判断状态...
    你直接加个状态判断,如果成功返回结果你再执行后便的代码即可,改动应该不会太大啊!
      

  9.   

    上面的$I("username_info").innerHTML = cue[0][8];取出cue集合索引是0的第8个属性的值是吧这个在IE 和FF是兼容是肯定没问题的
    看上面的原因感觉应该是加载的问题吧,如果你在页面加载完后就可以取出数据,那就结了
    放在 $(function(){
       这里面来,试试看。
    });
      

  10.   

    在IE报错,并不代表FF不报错,因为FF出错误了,你根本就看不出来,除非你调试, 有必要的话加几个try{}吧,这样就算出错了,后面的程序还是会执行,有可能就达到效果了,介绍一个个调试值,看是不是空值或者判断造成的。
      

  11.   

    不可能!ie跟FF(innerHTML)都支持。
      

  12.   

    function VerifyUsernameState(values) {  $I("username_info").innerHTML = cue[0][8];
      alert("马上开始AJAX判断");
      if (CheckTxtAJAX("username") != "0") {
      return 6;
      }
      return 0;
    }同志们,我在IF判断语句前 加了个alert,$I("username_info").innerHTML = cue[0][8]; 这句就在IE里产生效果了~
      

  13.   

    路过激活一下老帖,是因为IE中把某些标签的innerHTML属性处理为只读(例如table那一套标签的innerHTML在IE下就不能设置),此外还会检查标签嵌套的有效性(例如<li>必须放在<ul>里,如果在其它标签里通过innerHTML添加<li>也会出错)。