如果有两个或多个处在同一层级的元素,怎么用 JavaScript 判断它们的先后顺序呢?可以使用 compareDocumentPosition API。
JavaScript 使用 compareDocumentPosition 判断两个元素的位置关系(前后顺序)
今天用js做了个元素移动的效果,支持水平、垂直方向上的单次移动和来回移动,支持斜向运动(斜向运动时自带反弹效果 哈哈)。
假设这个元素是我们想要移动的:
<img id="moveE" src="http://www.saber.我爱你/wp-content/uploads/2014/07/1_b.gif">
它可以是图片,也可以是其他元素。可以定义css样式,这个没关系。
js代码如下:
function move_on(element,far,to,cishu,time) { var add=(to%2==1)?true:false; var num=(to<3)?((element.style.marginLeft==="")?0:parseInt(element.style.marginLeft)):((element.style.marginTop==="")?0:parseInt(element.style.marginTop)); var max=(to%2==1)?(num+far):num; var min=(to%2==1)?num:(num+far); var time=setInterval(function () { if(add){ num++; (to<3)?(element.style.marginLeft=num+"px"):(element.style.marginTop=num+"px"); if(num>=max){ add=false; cishu--; if(cishu==0){clearInterval(time)} } }else{ num--; (to<3)?(element.style.marginLeft=num+"px"):(element.style.marginTop=num+"px"); if(num<=min){ add=true; cishu--; if(cishu==0){clearInterval(time)} } } },time); }
(代码挺短的吧~三元操作符真是个好东西啊
参数解释:
要移动的元素、移动多少像素、移动类型、移动次数、定时器执行间隔时间(毫秒) 移动类型规定如下: 1 左右来回移动,起始点是从左向右 2 左右来回移动,起始点是从右向左 3 上下来回移动,起始点是从上向下 4 上下来回移动,起始点是从下向上 移动次数定义如下: 为0时为无限制来回移动,否则定义为多少则移动多少次。注意,一次单向运动算1次,一次来回运动算2次。
可能看的有点迷,没关系,接下来我一个个上例子。
Read More →
js做的元素不间断来回移动的效果
前两天把65浅蓝法杖+16带上之后,攻击只有9100多,换上65浅蓝套也才9200多点。后来把下三件首饰都换成了魔攻3.9的史诗,攻击到了10176。攻击破万,可以说到了一个新的层次,现在的副本里,基本无往而不利了。不过没有大师和成套的灵魂,PK的话属性不行,只能刷图打怪。
三个首饰分别是2.8E、3.3E、3.8E收的,现在金币比例是1:28。如果以后再收套灵魂的话估计差不多也要300。现在还没打算收。
现在遗憾的是两个戒指都是+3的,高一点会更好。然后身上可以打魔石的地方再打上魔石。
元素终于万攻了
参加强化风暴活动送的+16强化石到了,用这个把元素的武器强化到了16。
Read More →
c9把元素法杖+16了
var divA=document.getElementById("a"); if (!!divA) { alert("存在此元素") }else{ alert("此元素不存在!") };
非常简单,先获取这个元素,然后进行判断。我以前以为获取一个不存在的元素就会报错,原来把这个元素保存到变量里的时候,即使该元素不存在,也不会报错。如果是在语句的执行中需要对此元素进行操作,这时候找不到才会报错。
if条件里加了两个!!,其实不加也可以,加了的话在语法上更严谨,因为这两个感叹号的作用是把该变量转换为布尔值。
js判断某元素是否存在
<div id="a" style="background:#DAE0F1;"> <p id="b">bbbbbbbbbbbbbbbbb</p> </div> <script type="text/javascript"> function createE (tagName,id,className,style,innerHTML,addway,parentId,reforeId) { var newElement=document.createElement(tagName); newElement.id=id; newElement.className=className; newElement.style.cssText=style; newElement.innerHTML=innerHTML; if (addway=='end') { if (parentId=='body') { document.body.appendChild(newElement); }else{ document.getElementById(parentId).appendChild(newElement); } } if(addway=='before'){ if (parentId=='body') { document.body.insertBefore(newElement,document.getElementById(reforeId)); }else{ document.getElementById(parentId).insertBefore(newElement,document.getElementById(reforeId)); } } } createE('div','aa','link','font-size: 30px;','追加在a的末尾','end','a',''); createE('h1','','','font-size: 30px;','插入在a中的b之前','before','a','b'); createE('h1','c','','font-size: 30px;','追加在body末尾','end','body',''); createE('h1','d','','font-size: 30px;','插入在body中的a之前','before','body','a'); </script>
输出如下:
今天写了个使用js创建页面元素的函数,如果有多个元素需要使用js来创建的话,倒还是可以方便一些的。函数参数如下:
元素的标签名,元素的id,元素的class名,元素的内部样式,元素的内部代码,追加方式(填写“end”或者“before”),追加到的父元素的id,父元素中子元素的id(仅当追加方式为before时填写)。
如果追加方式为end,则使用appendChild()方法追加到父元素内;如果追加方式为before,则使用insertBefore()方法插入到父元素内某个子元素之前。
考虑到body是创建元素时常用的一个节点,如果把父元素的id填写为“body”则会按body来处理。