当前位置: 澳门新濠3559 > 操作系统 > 正文

 那么为什么下面的方式可以直接通过obj.value得到

时间:2019-12-21 19:57来源:操作系统
obj=CREATEOBJECT("msxml2.xmlhttp")webSite=""obj.OPEN("get",webSite,.F.)obj.sendoXml=obj.responsexmloDiv=oxml.getElementsByTagName("div")nDivLen=oDiv.length得到的结果nDivLen=0。怎样才能得到各div标签中的内容呢?谢谢!

obj=CREATEOBJECT("msxml2.xmlhttp")webSite=""obj.OPEN("get",webSite,.F.)obj.sendoXml=obj.responsexmloDiv=oxml.getElementsByTagName("div")nDivLen=oDiv.length得到的结果nDivLen=0。怎样才能得到各div标签中的内容呢?谢谢!

js怎样获取对象id值
js怎样获取 鼠标落下事件(onmousedown)所点击的div的值

function getDivValue(){

Javascript 运动中Offset的bug——逐行分析代码,让你轻松了运动的原理

我们先来看看这个bug 是怎么产生的。

 

 

<style type="text/css">

            # 那么为什么下面的方式可以直接通过obj.value得到呢,我们先来看看这个bug 是怎么产生的。div1 {

                width: 200px;

                height: 200px;

                background: red;

                

            }

        </style>

 

<body>

        <div id="div1">

            

        </div>

    </body>

以下是用来测试的Javascript代码 ,目的是 让div慢慢变窄。

 

 

<script type="text/javascript">

            setInterval(function(){

                var oDiv=document.getElementById("div1");

                

                oDiv.style.width=oDiv.offsetWidth-1+'px';

                

            },30);

        </script>

 

Javascript 代码 很简单,运行一下 没有任何问题,如愿的div在慢慢变小。

 

那这个offset 的bug又是怎么来的呢?

 

下面我们动动样式 就会神奇的事情发生了。。。

 

我们给div1 加个样式 border: 1px solid #CCCCFF;

 

 

<style type="text/css">

            #div1 {

                width: 200px;

                height: 200px;

                background: red;

                border: 1px solid #CCCCFF;

            }

        </style>

 

此时在运行代码 ,发现div 居然往右边慢慢增大。。。image BUG 惊现。。。。 明明是减1 为什么会出现这种情况。

 

让我们想想offset 有什么特点:

 

举例: div width : 200px  border 1px  。 实际上他得到的offsetWidth 是202px 。

 

 

 

那么,我们说回来,运动刚开始的时候,实际上div 的宽度是200px  那么offsetWidth 是202

 

这个时候 oDiv.style.width=oDiv.offsetWidth-1+'px'; 这句话就是等于 oDiv.style.width=202-1=201px; 然后在赋值给width

 

当再次执行这句话的时候 div的宽度是 201px; 这样的话,每次都会增加1px,反而慢慢变大了。 这就是offset 的bug 。

 

 

 

怎么解决这个问题呢?

 

其实不用这个offsetWidth 就可以了 。 我们用 width !! 写个函数直接获取 css样式中width 即可

 

获取不在行间中的样式 :

 

 

function getStyle(obj, name) {

                if (obj.currentStyle) {

                    return obj.currentStyle[name];

                } else {

                    return getComputedStyle(obj, null)[name];

                }

            }

 

那么我们在修改下原来的代码:

 

 

<script type="text/javascript">

            setInterval(function(){

                var oDiv=document.getElementById("div1");

                

                

                oDiv.style.width=parseInt(getStyle(oDiv,'width'))-1+'px';

                

            },30);

            

            function getStyle(obj, name) {

                if (obj.currentStyle) {

                    return obj.currentStyle[name];

                } else {

                    return getComputedStyle(obj, null)[name];

                }

            }

 

        </script>

运动中Offset的bug——逐行分析代码,让你轻松了运动的原理 我们先来看看这个bug 是怎么产生的。 style type=text/css #div1 { width: 200px...

加入有若干个 的div
这样的思路
1.首先判断鼠标落下的标签的 class是否是="idDrag",
2.如果是,则得到该div的id 值

    var t1=document.getElementById("test"); 

或者
为class为idDrag的元素 绑定onmousedown事件
点击其中一个div时 得到这个div的 id

    alert(t1.value);

我是这样写的但是不对
[code="java"]
//相当于getelementsByClassName()方法
var $js = function {
var el = [],
_el = document.getElementsByTagName;
for(var i=0;i<_el.length;i++){
if(_el[i].className == classStr){
el[el.length] = _el[i];
}
}
return el;
};

}

window.onload = function() {
var objs = $js;
for(var i=0;i<objs.length;i++) {
addEventHandler(objs[i], "mousedown", function{
var DragId = objs[i].id;
});
//.onmousedown =
}
};
[/code]
var DragId = objs[i].id 这里报错,因为objs[i]是数组里面有多个div
//addEventHandler是自己封装的 不用管它,总之它可以绑定事件

这是因为div没有value属性  所以这样是得不到的  要用t1.getAttribute("value");得到

大家帮忙想想办法

var obj=documnet.createElement("div");

obj.value="hi";

alert(obj.value);

答案是没有的,

 那么为什么下面的方式可以直接通过obj.value得到呢?  

那是因为document.cteateElement  创建并不是一个严格意义上的 div标签

 而是一个自定义的叫div的对象标签 然后又定义了一个叫value的属性

(obj.value="hi" 在JS中代表定义obj的一个熟悉叫value 同时赋值为"hi")

看到这里相比你已经明白了 

编辑:操作系统 本文来源: 那么为什么下面的方式可以直接通过obj.value得到

关键词:

  • 上一篇:没有了
  • 下一篇:没有了