1 第一个缺少了<body>标签,加上就正确了,但2即使少个<body>一样可以运行,原理不知道。

解决方案 »

  1.   

    1.我用ie7测下来似乎没问题。
    4: obj.innerHTML ='<select id="select_year">';后,实际上是插入了完成的<select>
    改成
    function calselect(obj)
    {
    obj.onmouseover= function(){
    xx ='<select id="select_year">';

    for(var i=2000; i<2001; i++)
    {
    xx +="<option value=" + i + ">" + i + "</option>";
    }
    xx +='</select><input id="input_year" type="text" value="aaa">';
        obj.innerHTML = xx;
        this.onmouseover= null;
    }}
      

  2.   

    1这个问题我以前也发现过,所以做DIV的时候一般都带
    <div id="test">&nbsp;</div>
      

  3.   

    to hookee():你的方法可行的;  
    ps:
    this.onmouseover= null;
    我看见好多人在执行完事件后都将它设为NULL,但不知道原理,谁能解释一下?
      

  4.   

    4的问题是因为每次请求innerHTML的时候,浏览器会重新解析,而在加的时候不符合DOM关系,所以乱掉了
      

  5.   

    1,2 运行都是正常的,
    除非是document.getElementById("text").firstChild.data = "modify";
    才会出错,原因是element.firstChild == null;第4:
    你把obj.onmouseover = function(){去掉用另外一個变量保存值之后再赋值给obj.innerHTML function calselect(obj)
    {
    //obj.onmouseover= function(){
    var objc ;
    objc ="<select id='select_year'>";

    for(var i=2000; i<2010; i++)
    {
    objc +="<option value=" + i + ">" + i + "</option>";
    }
    objc +="</select><input id='input_year' type='text' value='aaa'>";
    //}
     obj.innerHTML = objc;
    }
      

  6.   

    不设置this.onmouseover=null的话,每次触发该事件都会执行一次该代码了。
      

  7.   

    <body>
    <div id="cal_select" >
    aaa
    </div>
    </body>
    <script>debugger;
    window.onload=function(){
    calselect(document.getElementById("cal_select"));
    }
    function calselect(obj)
    {
    obj.onmouseover= function()
    {
    var xx ='<select id="select_year">';

    for(var i=2000; i<2001; i++)
    {
    xx +="<option value=" + i + ">" + i + "</option>";
    }
    xx +='</select><input id="input_year" type="text" value="aaa">';
    obj.innerHTML =xx;

    }

    obj.onmouseout = function()
    {
    obj.innerHTML ="aaa"; }

    }
    </script>
    像要的效果是移动上去出现下拉输入框,移开就显示aaa;为什么不行呢?
      

  8.   

    当然是执行了的,只是执行太快看不到,如果是循环那么多次最好用数组
    <body>
    <div id="cal_select" >
    aaa
    </div>
    </body>
    <script>debugger;
    window.onload=function(){
    calselect(document.getElementById("cal_select"));
    }
    function calselect(obj)
    {
    obj.onmouseover= function()
    {

    var xx ='<select id="select_year">';

    for(var i=2000; i<2001; i++)
    {
    xx +="<option value=" + i + ">" + i + "</option>";
    }
    xx +='</select><input id="input_year" type="text" value="aaa">';
    obj.innerHTML =xx;
    alert(obj.innerHTML)
    }

    obj.onmouseout = function()
    {
    obj.innerHTML ="aaa"; }

    }
    </script>
      

  9.   

    onmouseover到div上后出现<input><select>这同时丢掉了div焦点,也就是是执行了onmouseout,能这样解释执行太块的原因么?
    但ie的话,<div>里面的<input><select>的onmouseover会冒泡执行<div>里的onmouseover;
    那是不是我鼠标离开<input><select>,还会执行一次<div>里的onmouseover呢?