编程语言
首页 > 编程语言> > Web UI前端设计基础——javascript学习笔记03(DOM操作)

Web UI前端设计基础——javascript学习笔记03(DOM操作)

作者:互联网

第三节

复习巩固

1、EMCAScript : 编程语言基础 —— 包括 数据类型、 流程控制 、 函数

2、 DOM : 文档对象模型——包括 选择器

​ 属性——基本属性、样式事件

​ 结构—— 父容器 ,dom节点(父容器、兄弟节点 )

3、数据 :Json (JavaScript对象表示法)

/*json对象*/
var emp1={empName:'Mat',gender:'Male'};

/*json对象数组*/
var arr=[
    {empName:'Mat',gender:'Male'},
    {empName:'Green',gender:'Male'},
    {empName:'Mary',gender:'Male'}
]

4、循环:
1)单层循环

2)多层循环(如果出现两层以上的循环,一般认为是程序设计出现了问题——修改程序结构)

新课笔记

DOM操作

1、主要解决问题

题外话:vue.js的两大部分:

2、应用举例:二级联动
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>select上的onchange</title>

</head>
<body>
    大学
        <select id="sltArea">

        </select>
        <select id="sltSchool">

        </select>
</body>
<script src="js/onchange.js"></script>
<script src="js/json.js"></script>
</html>
/**
 *id是业务无关项
 */
var citites = [
    {cityid:1,cityname:'天津'},
    {cityid:2,cityname:'北京'}
]
var schools = [
    {schoolid:1,schoolname:'天津大学',cityid:1},
    {schoolid:2,schoolname:'南开大学',cityid:1},
    {schoolid:3,schoolname:'北京大学',cityid:2}
]
window.onload = function () {
    /**初始化城市列表**/
    initCities();
    /**
     * 通过选择城市设置学校列表
     */
    setSchoolsByCity();
}
function initCities(){
    /**
     * 1、找到父容器
     * 2、创建子元素
     * 3、把子元素放到父容器中
     */
    var area = document.getElementById('sltArea');
    for(var i = 0;i<citites.length;i++){
        var opt = document.createElement('option');
        opt.value = citites[i].cityid;
        opt.innerText = citites[i].cityname;
        area.appendChild(opt);
    }
}
function setSchoolsByCity(){
    var area = document.getElementById('sltArea');
    area.onchange = function () {
        sltSchoolOnChange();
    }
}
function sltSchoolOnChange() {
    /**
     * 1、获取选中的value
     * 2、过滤学校数组产生新数组
     * 3、把数组绑定到学校列表——Q:编程一个通用的方法
     */
    var area = document.getElementById('sltArea');
    var selected = area.selectedOptions[0].value;
    var newSchools = schools.filter(function (item) {
        return item.cityid == selected;
    })
    var school = document.getElementById('sltSchool');
    school.innerHTML='';
    for(var i = 0;i<newSchools.length;i++){
        var opt = document.createElement('option');
        opt.value = newSchools[i].schoolid;
        opt.innerText = newSchools[i].schoolname;
        school.appendChild(opt);
    }
}

作业布置

作业1: 独立完成二级联动编码。Q:尝试用一个统一的函数,处理下拉列表赋值

​ 问题:如何创建(设计)函数?

1、先编写具有重复片段的代码

2、找到表示单一职责的代码

3、找到那些(因)变量,抽象成模板

4、提升变量

​ 1)分离变量和处理过程 :变量对应结构;过程对应算法

​ 2)把处理过程封装成函数,使用形式参数(占位符)来代表变量的位置

5、函数使用:

​ 1)为实际参数赋值

​ 2)把实际参数传入函数中,从而执行函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>二级联动</title>

</head>
<body>
    大学
    <select id="sltArea">
    </select>
    <select id="sltSchool">
    </select>
</body>
<script src="js/school.js"></script>
<script src="js/json.js"></script>
</html>
window.onload = function () {
  
    init();
}
function init(){
    /**
     * 1、找到父容器
     * 2、创建子元素
     * 3、把子元素放到父容器中
     */
     /**
     *1、对可变内容进行抽象-->变量——>随时被替换成具体的内容
     * 2、变量   变成   函数的参数,写成函数
     */
    var selector = document.getElementById('sltArea');//选择器:找到将要赋值的select
    var arr = citites;//数据源:循环生成select中option对应的value和innerText
    var option = {var:'cityid',text:'cityname'};//value和innerText与列名之间的对应关系

    //option.val = option['val'];
    setOptionForSelect(selector,arr,option);
    selector.onchange = function(){
        sltSchoolOnChange();
    }
}

function sltSchoolOnChange() {
    var selector = document.getElementById('sltArea');
    var selected = selector.selectedOptions[0].value;
    var newSchools = schools.filter(function (item) {
        return item.cityid == selected;
    })
    var area = document.getElementById('sltSchool');
    area.innerHTML='';
    var data = newSchools;
    var opt = {var:'schoolid',text:'schoolname'};
    setOptionForSelect(area,data,opt);
}
function setOptionForSelect(selector,arr,option){
    for(var i = 0;i<arr.length;i++){
        var opt = document.createElement('option');
        opt.value = arr[i][option.var];//arr[i]['cityid']=>arr[i].cityid;
        opt.innerText = arr[i][option.text];
        selector.appendChild(opt);
    }
}
/**
 *id是业务无关项
 */
var citites = [
    {cityid:0,cityname:''},
    {cityid:1,cityname:'天津'},
    {cityid:2,cityname:'北京'}
]
var schools = [
    {schoolid:0,schoolname:'',cityid:0},
    {schoolid:1,schoolname:'天津大学',cityid:1},
    {schoolid:2,schoolname:'南开大学',cityid:1},
    {schoolid:3,schoolname:'北京大学',cityid:2}
]

作业2: 提前预习jQuery

标签:function,Web,schoolid,option,03,DOM,cityid,schoolname,var
来源: https://blog.csdn.net/abc701110/article/details/104675191