js中函数传入dom对象后,在函数内修改dom对象属性后不生效?

js函数传参问题

问题描述:
我在script标签中声明了一个changepic函数和一个move_to(elem)函数,move_to(elem)函数用于
移动元素,在changepic直接传入dom对象,在move_to函数中直接修改传入的dom对象的属性,但是修改完属性之后页面中的元素不生效,找了半天也没找到原因,希望能有人帮我一下啊!
js代码:

 /******************元素移动函数***************************/  
function move_to(elem){
        alert(elem);
        var l=elem.style.left;
        var t=elem.style.top;
        elem.style.left="0px";
        /*if(!l){
            l=-200;
            k=l+"px";
            alert(k);
            elem.style.left=k;
            }
        if(!t){
            t=300;
            elem.style.top=t+"px";
            }*/
        }
/*****************改变图片位置***************************/    
function changepic(myitem){
    /***初始化****/
    var mitem=document.getElementById(myitem);
    var img_width=400;
    var ul=mitem.getElementsByTagName("ul")[0];
    var lis=ul.getElementsByTagName("li");
    var ul_width=img_width*lis.length;
    var str="";
    var timer1=null;
    var timer2=null;
    var time_interval=100;
    ul.style.left="-100px";
    //ul.style.top="0px";
    for(var i=0; i<lis.length;i++){
        str+="<button type='button'>"+(i+1)+"</button>";
        }
    mitem.innerHTML+=str;
    /*****调用元素移动函数*****/
    move_to(ul);
    }

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>  
<link href="css/mycss.css" rel="stylesheet" type="text/css">
</head>

<body>


        <div class="wrap" id="a">
            <div class="view">
                <ul>
                    <li><img src="images/01.jpg" /></li>
                    <li><img src="images/02.jpg" /></li>
                    <li><img src="images/03.jpg" /></li>
                    <li><img src="images/04.jpg" /></li>
                    <li><img src="images/05.jpg" /></li>
                </ul>
            </div>
        </div>




<script src="js/check_tools.js"></script>
<script>
    window.onload=function(){
        changepic('a');

        }   
</script>
</body>
</html>

@charset "utf-8";
/* CSS Document */
*{ margin:0px; padding:0px}
ul{ list-style:none}


.wrap{ width:400px; border:1px solid; margin:10px; text-align:center;}
.wrap button{ height:20px; width:20px; margin:5px; border:none}
.wrap .view{ height:260px; width:400px; position:relative; /*overflow:hidden;*/}
.wrap .view ul{ white-space:nowrap; font-size:0px; position:absolute; left:0px; top:0px;}
.wrap .view li{ display:inline;}

2个回答



        /*****调用元素移动函数*****/
        //重新获取ul,innerHTML+=会生成新的dom对象(包括已经存在的),导致ul变量引用的之前的ul对象被销毁
        //不想破坏结构用appenChild,而不是innerHMTML来操作
        move_to(mitem.getElementsByTagName("ul")[0]);
weixin_44718708
大迪吃小迪 回复支付宝加好友偷能量挖: 解决疑惑就得膜拜
5 个月之前 回复
showbo
支付宝加好友偷能量挖 回复大猿猴: ul原dom对象在内存中,不在dom中,所以修改时是内存中的ul,不是dom中的新ul对象。
接近 4 年之前 回复
hiaia
今天的风儿有点喧嚣 多谢了,指导问题所在了,不过ul应用的对象好像还是存在的,我试了一下alert(ul.innerHTML);显示的不undefined;好像innerHTML是把原来的dom对象移除了
接近 4 年之前 回复
hiaia
今天的风儿有点喧嚣 收藏
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐