javascript总结3

DOM 元素查询

如果需要操作 HTML 元素,必须首先找到该元素

查询节点的方式

  • 通过 id 查询
  • 通过层次(节点关系)查询
  • 通过标签名称查询
  • 通过 name 属性查询

通过 id 查询

语法:

e = document.getElementById(元素ID)

通过层次(节点关系)查询

  • parentNode
    • 遵循文档的上下层次结构,查找单个父节点
  • childNodes
    • 遵循文档的上下层次结构,查找多个子节点

提示: 不用使用childen属性, 这个属性是Chrome浏览器专用属性, 其他浏览器不一定支持, 这种现象就是浏览器兼容问题, 是普遍问题. 建议使用通用API实现代码, 避免兼容性问题.

根据标签名查询节点

  • getElementsByTagName()
    • 根据指定的标签名称返回所有的元素
    • 忽略文档的结构查找整个 HTML 文档中的所有元素(子孙元素)
    • 如果标签名称错误,则返回 长度为 0 的节点列表
  • 返回一个节点列表(数组)
    • 使用节点列表的 length 属性获取个数
    • [index]:定位具体的元素

根据 name 属性查询节点

  • document.getElementsByName()
    • 根据标签的 name 属性的值进行查询

适合在表单中查询名字相同的 选项框 (单选/复选)

 

 

添加节点

DOM API 提供了添加元素的方法;

添加元素步骤:

  1. 创建元素
    • 新元素=document.createElement(元素名)
  2. 追加元素
    • 父元素.appendChild(新元素)

案例:

//追加新元素
var li = document.createElement('li');
li.innerHTML='Andy';
var ul = document.getElementById('demo');
ul.appendChild(li);

插入元素步骤:

  1. 创建新元素
    • 新元素=document.createElement(元素名)
  2. 插入元素
    • 父元素.insertBefore(新元素, 参考位置元素)
    • 在 参考位置元素 之前插入新元素

案例:

//插入新元素
li = document.createElement('li');
li.innerHTML='Mac';
var tom=ul.getElementsByTagName('li')[0];
ul.insertBefore(li, tom);

删除元素

删除元素步骤:

  1. 找到父元素
  2. 找到子元素
  3. 从父元素中删除子元素
    • 父元素.removeChild(子元素)

案例:

var ul = $('demo');
var li = ul.getElementsByTagName('li')[0];
//删除元素
ul.removeChild(li);


经典案例 级联菜单

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var cities=[
         ['请选择'],
         ['静安','浦东','宝山'],
         ['沈阳','高坎','鞍山'], 
         ['石家庄','保定','唐山','廊坊']];
function changeCities(list){
    //list = document.getElementById('province');
    //得到那个项目被选定了?
    var index = list.selectedIndex;
    console.log(index);
    //找到城市
    var city = cities[index];
    console.log(city);
    var s=document.getElementById("city");
    //清空城市列表
    s.innerHTML=""; 
    //创建城市列表
    for(var i=0; i<city.length; i++){
        //创建option 
        var opt=document.createElement('option');
        //value是发送到服务器的数据,
        // 不是给客户端使用的
        opt.value=i;
        //opt.setAttribute('value', i)
        opt.innerHTML=city[i];
        //添加到城市列表中
        s.appendChild(opt);
    }
}
</script>
</head>
<body>
    <h1>联动菜单</h1>
    省份:
    <select id="province" 
        onchange="changeCities(this);">
        <option value="0">请选择</option>
        <option value='1'>上海</option>
        <option value='2'>辽宁</option>
        <option value='3'>河北</option>
    </select>
    城市:
    <select id="city">
        <option value='0'>请选择</option>
    </select>
</body>
</html>

猜你喜欢

转载自luckybrown.iteye.com/blog/2335933