JavaScript|JavaScript知识——DOM增删改、操作内联样式


JavaScript知识

  • DOM增删改
  • 操作内联样式
    • 获取元素的样式
  • 例子

DOM增删改
  • 北京

var myClick = function (btn, fun) { var btn = document.getElementById(btn); btn.onclick = fun; } window.onload = function () { //创建一个“广州”节点,添加到#city下 myClick("btn1", function () { //document.createElement()可以用于创建一个元素节点对象 //它需要一个标签名作为参数,将会根据该标签名创建元素节点对象 //并将创建好的对象作为返回值返回 var li = document.createElement("li"); var gzText = document.createTextNode("广州"); //document.createTextNode()可以用来创建一个文本节点对象,需要一个文本内容作为参数 //将会根据该内容创建文本节点,并将新的节点返回/* * 将gzText设置li的节点 *appendChild()-向父节点中添加一个新的字节点 *- 用法:父节点.appendChild(子节点); */ li.appendChild(gzText); var city = document.getElementById("city"); city.appendChild(li); }); //将“广州”节点插入到bj前面 myClick("btn2", function () { //创建广州 var li = document.createElement("li"); var gzText = document.createTextNode("广州"); li.appendChild(gzText); //获取id为bj的节点 var bj = document.getElementById("bj"); //获取父节点city var city = document.getElementById("city"); //inserBefore //- 可以在指定的字节点前插入新的子节点 // 父节点.inserBefore(新节点,旧节点) city.insertBefore(li, bj); }); //广州节点替换北京节点 myClick("btn3", function () { //创建广州 var li = document.createElement("li"); var gzText = document.createTextNode("广州"); li.appendChild(gzText); //获取id为bj的节点 var bj = document.getElementById("bj"); //获取父节点city var city = document.getElementById("city"); //replaceChild //- 可以在指定的字节点替换新的子节点 // 父节点.replaceChild(新节点,旧节点) city.replaceChild(li, bj); }); //删除北京节点 myClick("btn4", function () { //获取id为bj的节点 var bj = document.getElementById("bj"); //获取父节点city var city = document.getElementById("city"); /* *removechlid() *- 删除子节点 *- 语法:父节点.removeChild(子节点); * */ city.removeChild(bj); }); }

【JavaScript|JavaScript知识——DOM增删改、操作内联样式】其中第一步的“创建一个“广州”节点,添加到#city下”,用第二种方法:
myClick("btn5", function () { var li = document.createElement("li"); li.innerHTML = "广州"; var city = document.getElementById("city"); city.appendChild(li); });

操作内联样式 操作CSS
通过JS修改元素的样式:
元素.style.样式名 = 样式值;

例子:
> window.onload =function(){ var btn = document.getElementById("btn"); var box = document.getElementById("box"); btn.onclick = function(){ box.style.width = "300px"; } } > #box{ height: 150px; width: 150px; background-color: red; }


注意如果CSS的样式名中含有-,比如background-color,这种样式名是不合法的。去掉-改成大写。
backgroundColor
通过style属性设置的样式都是内联样式,内联样式具有较高的优先级。
但是如果在样式中,有!important,则样式会有最高的优先级,会使得JS失效。
所以尽量不要使用!improtant
获取元素的样式 上述JS中的修改和读取的都是内联样式,如果想读取样式表中的样式,就没有办法了。
语法: 元素.currentStyle.样式名 //可以读取当前显示的样式

但是这个方法只有IE支持
在其他浏览器的方法:
getComputedStyle()这个方法来获取当前的样式,这个是window方法,可以直接使用
需要两个参数:
1、要获取样式的元素;
2、可以传递一个伪元素,一般都传null;
例子 JavaScript|JavaScript知识——DOM增删改、操作内联样式
文章图片

JavaScript|JavaScript知识——DOM增删改、操作内联样式
文章图片

当scrollHeight - scrollTop == clinetHeight 时,说明滚动条到底了。
但是但是!!! 在调试过程中发现,即使滚动条到底了,也无法触发行为,原因是:
调试得知chrome浏览器下scrollTop是小数,而clientHeight和scrollHeight始终是整数。所以在相减之后,结果始终是一个大于clinetHeight的小数。
解决方法:将等式改为不等式,并且左边-1:scrollHeight - scrollTop -1 < clinetHeight
例子:阅读用户须知,滚动条不到底,无法勾选:
> window.onload = function () { //滚动条到底的时候,表单才能用 var info = document.getElementById("info"); var inputs = document.getElementsByTagName("input"); info.onscroll = function () { //检查滚动条是否到底 if (info.scrollHeight - info.scrollTop - 1 < info.clientHeight) { inputs[0].disabled = false; inputs[1].disabled = false; }}; var btn = document.getElementById("btn"); btn.onclick = function(){ alert(info.scrollHeight - info.scrollTop); alert(info.clientHeight); }; }; > #info { width: 300px; height: 500px; background-color: #bfa; overflow: auto; } 欢迎用户注册
... 我到底了~~
我已仔细阅读,一定遵守协议

在某个区域内,鼠标移动的坐标会被记录下来:
事件对象:当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数
> window.onload = function () { var areaDiv = document.getElementById("areaDiv"); var showDiv = document.getElementById("showDiv"); areaDiv.onmousemove = function (event) { //在showDiv里面显示鼠标坐标 // alert(event); var x= event.clientX; var y= event.clientY; showDiv.innerHTML = "x="+x+","+"y="+y; } }; > #areaDiv { width: 350px; height: 150px; border: 1px solid black; }#showDiv { width: 350px; height: 50px; border: 1px solid black; }


JavaScript|JavaScript知识——DOM增删改、操作内联样式
文章图片

div跟随鼠标走动
> #box{ height: 150px; width: 150px; background-color: red; position:absolute; } > window.onload = function(){ var box = document.getElementById("box"); document.onmousemove = function(event){ var left = event.clientX; var top = event.clientY; var st = document.documentElement.scrollTop; var sl = document.documentElement.scrollLeft; box.style.left = left+sl+"px"; box.style.top = top+st+"px"; } }

    推荐阅读