操作节点

1.访问节点 document.getElementById(id); 返回对拥有指定id的第一个对象的引用

document.getElementsByName(name); 返回带有指定名称的节点集合 注意: 是Elements,返回的是元素的数组,而不是一个元素

document.getElementsByTagName(tagname); 返回带有指定标签名的对象集合 注意:Elements,返回元素的顺序是它们在文档中的顺序。参数可以不区分大小写。

如果把特殊字符串 "*" 传递给 getElementsByTagName() 方法,它将返回文档中所有元素的列表。

document.getElementsByClassName(classname); 返回带有指定class名称的对象集合 注意:Elements,在 Internet Explorer 5,6,7,8 中无效。

2.生成节点 document.createElement(eName); 创建一个节点

document.createAttribute(attrName); 对某个节点创建属性

document.createTextNode(text); 创建文本节点

3.添加节点 document.insertBefore(newNode,referenceChild); 在某个节点前插入节点

parentNode.appendChild(newNode); 给某个节点添加子节点

4.复制节点 cloneNode(true | false); 复制某个节点 参数:是否复制原节点的所有属性

5.删除节点 parentNode.removeChild(node) 删除某个节点的子节点 node是要删除的节点 注意:IE会忽略节点间生成的空白文本节点(例如,换行符号),而Mozilla不会这样做。在删除指定节点的时候不会出错,但是如果要删除最后一个子结点或者是第一个子结点的时候,就会出现问题。这时候,就需要用一个函数来判断首个子结点的节点类型。 元素节点的节点类型是 1,因此如果首个子节点不是一个元素节点,它就会移至下一个节点,然后继续检查此节点是否为元素节点。整个过程会一直持续到首个元素子节点被找到为止。通过这个方法,我们就可以在 Internet Explorer 和 Mozilla 得到正确的方法。

6.修改文本节点 appendData(data); 将data加到文本节点后面

deleteData(start,length); 将从start处删除length个字符

insertData(start,data) 在start处插入字符,start的开始值是0;

replaceData(start,length,data) 在start处用data替换length个字符

splitData(offset) 在offset处分割文本节点

substringData(start,length) 从start处提取length个字符

7.属性操作 getAttribute(name) 通过属性名称获取某个节点属性的值

setAttribute(name,value); 修改某个节点属性的值

removeAttribute(name) 删除某个属性

8.查找节点 parentObj.firstChild 如果节点为已知节点的第一个子节点就可以使用这个方法。此方法可以递归进行使用 parentObj.firstChild.firstChild.....

parentObj.lastChild 获得一个节点的最后一个节点,与firstChild一样也可以进行递归使用 parentObj.lastChild.lastChild.....

parentObj.childNodes 获得节点的所有子节点,然后通过循环和索引找到目标节点

9.获取相邻的节点 neborNode.previousSibling :获取已知节点的相邻的上一个节点 nerbourNode.nextSlbling: 获取已知节点的下一个节点

10.获取父节点 childNode.parentNode:得到已知节点的父节点

 

操作select

发表于2009年6月24日darkmi

总结了一些javascript操纵select表单控件的方法。

//添加选项

function addOption(){ var option = document.createElement(“OPTION”); var select = document.getElementById(“selectId”); option.text = “optionText”; option.value = “1”; select.add(option); }

说明: 默认添加到选择框的最下端。

//向指定位置添加选项

function insertOption(){ var select = document.getElementById(“selectId”); var option = document.createElement(“OPTION”); option.text = “bbb”; option.value = “2”; select.add(option, 1); }

 

说明: 注意select.add(option, 1);方法的最后一个参数即可,该参数指定了option的位置。

//遍历选项

function removeOption(){ var selectId = document.getElementById(“selectId”); for(var i = 0; i < selectId.length; i++){ if(selectId.options[i].selected==true){ selectId.options.remove(i); alert("选中项的值为:" + selectId.options[i].value); alert("选中项的文本为:" + selectId.options[i].text); } } }

//删除选项

function removeOption(){ var selectId = document.getElementById(“selectId”); for(var i = 0; i < selectId.length; i++){ if(selectId.options[i].selected==true){ selectId.options.remove(i); } } }

//获得选中选项的索引值

function getIndex(){ var select = document.getElementById(“selectId”); alert(select.selectedIndex); }

说明: 选择框的selectedIndex属性比循环遍历option数组获得选中选项的方法方便多了。


操作选择框时,getElementById与getElementsByName的区别如下:

getElementById得到的是select对象; getElementsByName得到的是个二维数组;

假设页面有如下select选择框:

通过getElementById来对其选项进行的遍历方法如下:

var selectById = document.getElementById(“city”); //遍历city for(var i = 0; i < selectById.length; i++){ alert("text ==" + selectById.options[i].text + ", value == " + selectById.options[i].value); }

通过getElementsByName来对其选项进行遍历的方法如下:

var selectByName = document.getElementsByName(“city”); for(var i = 0; i < selectByName[0].length; i++){ alert("text == " + selectByName[0][i].text + ", value == " + selectByName[0][i].value); }

 

控制radio

选中:document.getElementById("id").checked=true;

取消选中:document.getElementById("id").checked=false;

 

Form表单

Form 对象代表一个 HTML 表单。

在 HTML 文档中

每出现一次,Form 对象就会被创建。

表单用户通常用于收集用户数据,包含了 input 元素如:文本字段,复选框,单选框,提交按钮等待。表单也可以说选项菜单, textarea, fieldset, legend, 和 label 元素。

表单用于向服务端发送数据。

Form 对象属性

属性描述W3C
acceptCharset服务器可接受的字符集。Yes
action设置或返回表单的 action 属性。Yes
enctype设置或返回表单用来编码内容的 MIME 类型。Yes
length返回表单中的元素数目。Yes
method设置或返回将数据发送到服务器的 HTTP 方法。Yes
name设置或返回表单的名称。Yes
target设置或返回表单提交结果的 Frame 或 Window 名。Yes

action: 提交表单后,服务器端处理脚本的URL。

autocomplete: 自动填充

enctype

  • application/x-www-form-urlencoded,默认
  • multipart/form-data,若包含type=file的控件,必须使用该编码,且method为post。请参阅 RFC1867。
  • text/plain

method: 表单的HTTP提交方式,最常用的是 get 和 post。

target: _blank, _self, _parent, _top

Form 对象方法

方法描述W3C
reset()重置一个表单Yes
submit()提交一个表单Yes

Form 对象事件

事件描述W3C
onreset在重置表单元素之前调用。Yes
onsubmit在提交表单之前调用。Yes

onSubmit: 点击表单提交按钮时,会调用该函数。返回 fasle,就不会提交表单;否则提交表单

 

 

Form表单提交

通常表单的提交有两种方式,一是直接通过html的form提交,代码如下:

但有时候我们会出于安全角度考虑,给用户输入的密码进行加密,方法一就没办法解决这个问题,这时候我们同常会选择另一种方法,使用javaScript来进行表单提交,代码入下:

这种方法有个缺点就是,打乱正常的表单提交程序,通常用户输入完成后点击回车键就可以提交,但是这个方法实现不了,所以,使用下面的方法便可以解决这个问题,,通过form自身的onsubmit方法,来触发提交,然后进行input的修改:

注意,checkForm()方法中,return true时,表单才会正常提交,为false时,浏览器将不会提交,通常是用户的密码输入错误时,终止提交。

之前说过,为安全考虑用户提交时,一般对密码进行加密处理,代码如下:

这种做法看上去没问题,但是当用户输入完成后,提交会发现密码框的 * 会由几个瞬间变成 32个,这是由于MD5加密造成的(MD5有32个字符);如果想避免出现这种情况,需要充分利用到,代码如下:

注意,是用户输入密码的input框,并没有设置 name 属性,而是给 设置了 name='pwd',这样表单提交只会提交带有name属性的输入框,从而解决了上面的那个问题。

 

绑定事件onclick

JavaScript三种绑定事件的方式:

那么问题来了,1 和 2 的方式是我们经常用到的,那么既然已经有两种绑定事件的方法为什么还要有第三种呢?答案是这样的:

用 "addeventlistener" 可以绑定多次同一个事件,且都会执行,而在DOM结构如果绑定两个 "onclick" 事件,只会执行第一个;在脚本通过匿名函数的方式绑定的只会执行最后一个事件。

以上;可根据场景灵活选择。

再加一个attachEvent

attachEvent和addEventListener在前端开发过程中经常性的使用,他们都可以用来绑定脚本事件,取代在html中写obj.onclick=method

相同点:

它们都是dom对象的方法,可以实现一种事件绑定多个事件处理函数。

不同点:

1、早期版本的Internet Explorer浏览器使用attachEvent,它不遵循W3C标准,而其他的主流浏览器如FF等遵循W3C标准的浏览器都使用addEventListener,所以实际开发中需分开处理。

2、多次绑定后执行的顺序是不一样的,attachEvent是后绑定先执行,addEventListener是先绑定先执行。

3、绑定时间时,attachEvent必须带on,如onclick,onmouseover等,而addEventListener不能带on,如click,mouseover。这个区别在以上代码中可见。

4、attachEvent仅需要传递两个参数,而addEventListener需要传递三个参数,这里牵扯到“事件流”的概念。

侦听器在侦听时有三个阶段:捕获阶段、目标阶段和冒泡阶段。顺序为:捕获阶段(根节点到子节点检查是否调用了监听函数)→目 标阶段(目标本身)→冒泡阶段(目标本身到根节点)。此处的参数确定侦听器是运行于捕获阶段、目标阶段还是冒泡阶段。 如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。 如果useCapture 为 false,则侦听器只在目标或冒泡阶段处理事件。 要在所有三个阶段都侦听事件,请调用两次 addEventListener,一次将 useCapture 设置为 true,第二次再将useCapture 设置为 false。

为了解决浏览器的兼容性可以写如下代码:(略,用不上了)

 

删除某个div下的div元素

最好给需要删除的div元素定义一个ID,以方便对其进行操作;

注意JS中是没有remove();方法的,在jquery中就可以直接使用 $("#divID").remove();移除该元素;这样非常方便、简单。

js中的话要通过获取该元素的父级元素,再调用.removeChild(要删除的元素);

 

innerHTML和innerText

document对象中有innerHTML、innerText这两个属性,都是获取document对象文本内容,但使用起来还是有区别的;

1) innerHTML设置或获取标签所包含的HTML+文本信息(从标签起始位置到终止位置全部内容,包括HTML标签,但不包括自身)

2) outerHTML设置或获取标签自身及其所包含的HTML+文本信息(包括自身)

3) innerText设置或获取标签所包含的文本信息(从标签起始位置到终止位置的内容,去除HTML标签,但不包括自身)

4) outerText设置或获取标签自身及其所包含的文本信息(包括自身)

innerText和outerText在获取的时候是相同效果,但在设置时,innerText仅设置标签所包含的文本,而outerText设置包含包括标签自身在内的文本。

示例代码:

示例1:

通过IE浏览器打开,弹出内容为"hello world"和"hello world"

通过Firefox浏览器打开,弹出内容为"hello world"和"undefined"

通过chrome浏览器打开,弹出的内容为"hello world"和"hello world"

alert(content.outerHTML)则弹出:"<p id="p1">hello world</p>"

示例2

通过IE浏览器打开,弹出内容为"<p id="p1">hello world</p>"和"hello world"

通过Firefox浏览器打开,弹出内容为"<p id="p1">hello world</p>"和"undefined"

通过chrome浏览器打开,弹出的内容为"<p id="p1">hello world</p>"和"hello world"

alert(content.outerHTML)则弹出:"<div id="d1"><p id="p1">hello world</p></div>"

综上:innerHTML所有浏览器都支持,innerText是IE浏览器支持的,Firefox浏览器不支持。

不同之处:

1) innerHTML、outerHTML在设置标签之间的内容时,包含的HTML会被解析;而innerText、outerText则不会;

2) innerHTML、innerText仅设置标签之间的文本,而outerHTML、outerText设置包含自身标签在内文本

函数

setInterval

定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法 setInterval(code,millisec[,"lang"])

参数 描述 code 必需。要调用的函数或要执行的代码串。 millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。

返回值 一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。

setTimeout

定义和用法 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

语法 setTimeout(code,millisec)

参数 描述 code 必需。要调用的函数后要执行的 JavaScript 代码串。 millisec 必需。在执行代码前需等待的毫秒数。

提示和注释 提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。

innerHTML

定义和用法 innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。

语法 tablerowObject.innerHTML=HTML

 

Tampermonkey例子

插入内容

增加、删除和获取内容

添加属性:obj.setAttribute('attr_name','attr_value');

获取属性值:obj.getAttribute('attr_name');

删除属性:obj.removeAttribute('attr_name');

点击提交表单

点击按钮

原生javascript的click在w3c里边的阐述是DOM button对象,也是html DOM click() 方法,可模拟在按钮上的一次鼠标单击。

button 对象代表 HTML 文档中的一个按钮。button元素没有默认的行为,但是必须有一个 onclick 事件句柄以便使用。

语法:buttonObject.click()

onclick是一个事件,Event对象 。支持该事件的 JavaScript 对象:button, document, checkbox, link, radio, reset, submit

HTML DOM Event 对象,代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!

获取select

获取时间

百度测试

自动登录并刷新

八零音乐自动签到