1.怎么实现选项卡?实现逻辑是什么?
首先,给选中后的按钮设置颜色标签(以后谁点击,就给他加上这个类名,同时把别的按钮的类名清空。然后再把相应的div的display变成block,同时把别的display变成hidden)
<div class="wrapper"><button>11</button><button>222</button><button>333</button><div class="content">111</div><div class="content">222</div><div class="content">333</div></div>
.wrapper div {display: none;width: 200px;height: 200px;border: 2px solid red;}.active {background-color: yellow;}
var btn = document.getElementsByTagName('button');var div = document.getElementsByClassName('content');for (var i = 0; i < btn.length; i++) {(function (n) {btn[n].onclick = function () {for (var j = 0; j < btn.length; j++) {btn[j].className = "";div[j].style.display = "";}this.className = "active";div[n].style.display = 'block';}}(i))}
2.怎么创造一个可移动的方块?
var div = document.createElement('div');document.body.appendChild(div);div.style.width = '100px';div.style.height = '100px';div.style.backgroundColor = 'red';div.style.position = 'absolute';div.style.left = '100px';div.style.top = 0;// 注意:对于left和top来说,他们的值也必须是100px,这种// 如果值是0的话,那么可以不用加引号,也不用px。setInterval(function () {div.style.left = parseInt(div.style.left) + 2 + "px";div.style.top = parseInt(div.style.left) + 2 + "px";}, 10)
如何让方块加快速度?做加速运动?
var speed = 1;setInterval(function() {speed += speed/10;div.style.left = parseInt(div.style.left)+speed+"px";div.style.top = parseInt(div.style.left) + speed + "px";},50)
如何停止?
var speed = 1;var timer = setInterval(function () {speed += speed / 10;div.style.left = parseInt(div.style.left) + speed + "px";div.style.top = parseInt(div.style.left) + speed + "px";if (parseInt(div.style.top) > 500 && parseInt(div.style.left) > 500) {clearInterval(timer)}}, 50)
怎么用键盘控制某元素上下移动?
document.onkeydown = function (e) {switch (e.which) {case 38 :div.style.top = parseInt(div.style.top) - 5 + "px";break;case 40 :div.style.top = parseInt(div.style.top) + 5 + 'px';break;case 37:div.style.left = parseInt(div.style.left) - 5 + 'px';break;case 39:div.style.left = parseInt(div.style.left) + 5 + 'px';}}
如果查看键盘键代表的数字?
通过下面的方法查得, left = 37, up = 38, right = 39, down = 40
document.onkeydown = function (e) {console.log(e.which);}
如何使得控制元素的时候,可以加速?
<button style="position:fixed;top:50%;right:30%">加速</button><button style="position:fixed;top:55%;right:30% ">重置</button>
var speed = 5;document.onkeydown = function (e) {switch (e.which) {case 38 :div.style.top = parseInt(div.style.top) - speed + "px";break;}}var btns = document.getElementsByTagName('button');fastbtn = btns[0];rebtn = btns[1];fastbtn.onclick = function () {speed++;}rebtn.onclick = function () {speed = 1;}
3.怎么实现涂色板?
ul {list-style: none;width: 400px;height: 400px;}li {box-sizing: border-box;width: 20px;height: 20px;float: left;border:1px solid black;}
<ul>li*400</ul>
<script type="text/javascript">var ul = document.getElementsByTagName('ul')[0];ul.onmouseover = function (e) {var event = e || window.event;var target = event.target || event.srcElement;target.style.backgroundColor = "rgb(0,255," + target.getAttribute('col') + ")";target.setAttribute('col', parseInt(getAttribute('col')) + 6);}</script>
4.查询元素有哪几种方法?(重点)
有两种大方法:1.通过自身特征查找2.通过和别的元素的关系查找document是根标签。真正代表整个文档
通过元素自身特征查找元素有哪些方法?
根据id找元素(一般不用)<br /> document.getElementById('demo');<br /> 根据标签名找元素(常用)<br /> var div = document.getElementsByTagName('div');<br /> 这里的div是 类数组。 (不是数组)<br /> <br /> 这个用的不多,因为在ie9以下的浏览器版本不好使<br />var div = document.getElementsByClassName("name");<br /> 下面两个很好用,但是缺点也很大:不是实时的。<br /> 比如女鬼杀一个人,照片上就少一个,这就是实时的。<br /> 比方说,html里有三个div,但是在控制台上执行div.remove(),<br /> 删除了一个div,但是querySelector搜到的还是三个,因为他会生成自己<br /> 副本,然后再副本里进行操作。<br /> querySelector 和 querySelectiorAll是可以按照css选择器的方式来选的<br />var strong = document.querySelector('div>span strong.demo');
通过元素和其他元素的关系查找元素有哪几种方法?
var li = document.querySelector('li'); <br /> 1.遍历结点树: 以下都不带括号,因为不是方法<br /> parentNode,一个结点的父节点只有一个<br /> childNodes:子节点们,子节点不只是元素结点,他有很多,比如<br /> 元素节点,属性节点,文本节点,注释节点,document,DocumentFragment<br /> 可以用div.childNodes.length()查看结点长度<br /> <br /> firstChild->第一个子节点<br /> lastChild->最后一个子节点<br /> nextSibling->后一个兄弟节点<br /> previousSibling->前一个兄弟节点<br /> <br /> 2.基于元素结点树的遍历<br /> parentElement -> 返回当前结点的父元素结点(IE不兼容)<br /> children:只返回当前元素的元素子节点<br /> firstElementChild -> 第一个元素子节点<br /> lastElementChild -> 最后一个元素子节点<br /> nextElementSibling/previousElementSibling -> 前/后一个兄弟元素节点
5.节点自身有哪些知识?他的四个属性是什么?有什么方法?
节点的四个属性:
nodeName: 元素的标签名,一大些形式表示,只读<br /> div.childNodes[0].nodeName<br /> nodeValue<br /> Text节点和Comment节点的文本内容,可读写 <br /> div.childNodes[0].nodeValue<br /> nodeType<br /> 该节点的类型,只读<br /> 元素节点 --- 1<br /> 属性节点 --- 2<br /> 文本节点 --- 3<br /> 注释节点 --- 8<br /> document --- 9<br /> DocumentFragement --- 11<br /> div.childNodes[0].nodeType<br /> attribute(一般用不着)<br /> Element结点的属性集合<br />
节点的一个方法:Node.hasChildNodes();
document的继承关系: document -> HTMLDocument.prototype -> Document.prototype
HTMLDocument.prototype定义了一些常用的属性,body,head分别指代标签 即:document.body document.head 可以直接选中,而不用
document.getElementsByTagName(‘body’)
Document.prototype上定义了documentElement属性,指代文档的根元素html
即:document.documentElement就是html标签
6.文档的增删改查替换方法有哪些?元素的属性和方法有哪些?
// 增 元素、文本、注释、文档片
document.createElement(); //常用document.createTextNode();document.createComment();document.createDocumentFragment();// 插// 在末尾插入 常用parentNode.appendChild();div.appendChild();// 父亲元素调用,在自己的内部insert a before bparentNode.insertBefore(a, b);div.appendChild()// 删除// 两种,一种父元素删除子元素,一种子元素自删parent.removeChild();child.remove(); //常用// 替换 不咋用parent.replaceChild(new, origin);
Element节点的一些属性<br /> innerHTML :包含标签 <br /> innerText :只取文本<br /> Element节点的一些方法<br /> setAttribute(name,value)<br /> div.setAttribute('class','box')
