c1任务认证04

任务一

一、任务描述

1、首先,能够用HTML + CSS + JavaScript 在页面正中生成一幅广告图片

2、其次,用JavaScript数组在页面上放置多张广告图片,同时动态计算不同广告位之间的布局,实现水平等间距布局

3、最后,用JavaScript代码实现多张广告图片轮播效果:在页面正中每隔3秒切换不同的广告图片,多张图片轮流显示。

二、实现过程

1、在Script标签中定义一个变量来存储创建的img元素,然后通过setAttribute()方法设置它的路径,最后添加在父节点中就好了

<script type="text/javascript">
	var box = document.getElementById("box");		
    var bin = document.createElement("img");
	bin.setAttribute("src","img/01.jpg");
	box.appendChild(bin);
</script>

2、给图片定义样式,定义一个数组arr 存放图片,利用循环创建图片节点,设置路径,放入数组,将数组元素添加到文档流。定义x 获取到屏幕宽度,利用循环给每一张图片设置marginLeft,取值为:(屏幕宽度x - 图片宽度 * 图片个数)/ (图片个数 + 1)

img {
	width: 200px;
	height: 200px;
}
		
<script type="text/javascript">
	window.onload = function () {
		// 利用数组存储图片并动态生成图片
		var arr = [];
		for (var i = 0; i < 5; i++ ) {
			var bin = document.createElement("img");
			bin.setAttribute("src","img/0" + [i+1] +".jpg");
			arr.push(bin);
			document.body.appendChild(arr[i]);
		}
		console.log(arr.length);
		// 动态计算广告位之间的布局,实现水平等间距布局
		var x = document.body.clientWidth;
    	for (var i = 0; i < arr.length; i++) {
		arr[i].style.marginLeft = (x - 200 * arr.length) / (arr.length + 1) + "px";
	}			
}
		
</script>

效果:

将第一个for循环中 i < 5 改为 i < 7 看效果

不足之处在于,图片个数 * 图片宽度 超过屏幕宽度的话,marginLeft会变负值,图片会叠在一起。

3、只实现了简单的轮播效果,后期完善

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<style>
    .block{
        width: 500px;
        height: 300px;
        border: 1px solid black;
        margin: 200px auto;
    }    
</style>
<body>
<div class="block">
	<img id="cut" src="img/01.jpg" >
</div>
<script>
    var block=document.getElementsByClassName("block");
    var cut =document.getElementById('cut');
    var timer = setInterval(lunbo,3000);
    var count = 1;
    function lunbo(){    
        count++;
        cut.src = "img/0" + count + ".jpg";
		if (count > 7) count = 1;
    }
</script>
</body>
</html>


拓展任务

一、实现多级联动菜单

二、实现过程

这个任务对我来说有点难,参考别人的完成

参考博客 https://blog.csdn.net/qq_26416195/article/details/81114607

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>地址选择</title>
    <link rel="stylesheet" href="style.css">
	<style type="text/css">
		
		/*全局样式*/
		* {
		    margin: 0;
		    padding: 0;
		}
		 
		fieldset {
		    width: 1200px;
		    padding: 20px;
		    margin: 200px auto;
			font-size: 30px;
		    border: 1px solid #ccc;
		}
		 
		#addr-show, #addr-show02,#addr-show03{
		    width: 400px;
		    height: 50px;
			font-size: 30px;
		    margin-bottom: 10px;
		}
		 
		.btn {
		    width: 80px;
		    height: 50px;
		    border-radius: 4px;
		    border: 1px solid #ccc;
			font-size: 30px;
		    outline: none;
		    background-color: #aaa;
		    margin: 0 20px;
		}
		 
		.btn:disabled{
		    background-color:#ccc;
		}
		 
		 
		select {
		    width: 300px;
		    height: 50px;
			font-size: 30px;
		}
	</style>
</head>
<body>
<div>
    <fieldset>
        <form action="#">
            <label for="addr-show">您选择的是:
                <input type="text" value="" id="addr-show">
            </label>
            <br/>
 
            <!--省份选择-->
            <select id="prov" onchange="showCity(this)">
                <option>=请选择省份=</option>
 
            </select>
 
            <!--城市选择-->
            <select id="city" onchange="showCountry(this)">
                <option>=请选择城市=</option>
            </select>
 
            <!--县区选择-->
            <select id="country" onchange="selecCountry(this)">
                <option>=请选择县区=</option>
            </select>
            <button type="button" class="btn met1" onClick="showAddr()" id="button-show" >确定</button>
        </form>
    </fieldset>
</div>
 
<script src="city.js"></script>
<script src="method.js"></script>
 
</body>
</html>

method.js

var addrShow = document.getElementById('addr-show');
var btn = document.getElementById('button-show');
var prov = document.getElementById('prov');
var city = document.getElementById('city');
var country = document.getElementById('country');  
 
/*用于保存当前所选的省市区*/
var current = {
    prov: '',
    city: '',
    country: ''
};

/*自动加载省份列表*/
// 这样写将函数声明变成直接执行的函数表达式
(function showProv() {
	btn.disabled = true;
	var len = provice.length;
	for (var i =0; i < len; i++) {
		var provOpt = document.createElement('option');
		provOpt.innerText = provice[i]['name'];
		provOpt.value = i;
		prov.appendChild(provOpt);
	}
})();
/*根据所选的省份来显示城市列表*/
function showCity(obj) {
	var val = obj.options[obj.selectedIndex].value;
	if (val != current.prov) {
		current.prov = val;
		addrShow.value = '';
		btn.disabled = true;
	}
	
	if (val != null) {
		city.length = 1;
		var cityLen = provice[val]["city"].length;
		for (var j = 0; j < cityLen; j++) {
			var cityOpt = document.createElement('option');
			cityOpt.innerText = provice[val]["city"][j].name;
			cityOpt.value = j;
			city.appendChild(cityOpt);
		}
	}
}
 
/*根据所选的城市来显示县区列表*/
function showCountry(obj) {
    var val = obj.options[obj.selectedIndex].value;
    current.city = val;
    if (val != null) {
        country.length = 1; //清空之前的内容只留第一个默认选项
        var countryLen = provice[current.prov]["city"][val].districtAndCounty.length;
        if (countryLen == 0) {
            addrShow.value = provice[current.prov].name + '-' + provice[current.prov]["city"][current.city].name;
            return;
        }
        for (var n = 0; n < countryLen; n++) {
            var countryOpt = document.createElement('option');
            countryOpt.innerText = provice[current.prov]["city"][val].districtAndCounty[n];
            countryOpt.value = n;
            country.appendChild(countryOpt);
        }
    }
}
 
/*选择县区之后的处理函数*/
function selecCountry(obj) {
    current.country = obj.options[obj.selectedIndex].value;
    if ((current.city != null) && (current.country != null)) {
        btn.disabled = false;
    }
}
 
/*点击确定按钮显示用户所选的地址*/
function showAddr() {
    addrShow.value = provice[current.prov].name + '-' + provice[current.prov]["city"][current.city].name + '-' + provice[current.prov]["city"][current.city].districtAndCounty[current.country];
}

city.js

https://blog.csdn.net/qq_26416195/article/details/81114888

效果:

自测

1、实现对数组[0, 9, 12, 1, 6, 3, 7, 11] 的冒泡排序

function maoPao(arr) {
	var x = arr.length;
	var exchange;
	while (x > 0) {
		for (var i = 0; i < x - 1; i ++) {
			if (arr[i] > arr[i+1]) {
				exchange = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = exchange;
			}
		}
		x--;
	}
	return arr;	
}
		
var arr = [0, 9, 12, 1, 6, 3, 7, 11];
var arrSort = maoPao(arr);
console.log(arrSort);

2、解释JavaScript中堆和栈数据结构的区别

JS变量都存放在内存中,而内存给变量开辟了两块区域,分别为栈区域和堆区域
栈像个容器,容量小速度快,栈内存的地址分配是连续的,所以在后续也不能对其进行进一步的扩充或者删除。
堆像个房间,容量较大,堆内存存储变量时没有什么规律可言。

3、a=1,b=2,使用至少三种方法交换a和b变量的值

<script type="text/javascript">
	var a = 1, b = 2;
	// 第一种方法 借助一个新的变量
	var c;
	c = a;
	a = b;
	b = c;
	// 第二种方法 算数运算
	a = b - a; // a = 1, b = 2
	b = b - a; // a = 1, b = 1 
	a = a + b; // a = 2, b = 1
	// 第三种方法 位运算
	a = a^b;
	b = a^b;
	a = a^b;		
</script>

4、使用for循环求出0~300之间奇数之和

<script type="text/javascript">
	var num = 0;
	for (var i = 0; i < 300; i++) {
		if (i % 2 != 0) {
			num += i;
		}
	}
	console.log(num);
</script>

22500

5、去除数组[8, 7, 2, 1, 0, 5, 1, 9, 2]中重复的值,相同的值只保留一个

<script type="text/javascript">
	var arr = [8, 7, 2, 1, 0, 5, 1, 9, 2];
	// 外层遍历数组,内层比较值
	for (var i = 0; i < arr.length; i++) {
		for (var j = i+1; j < arr.length; j++) {
			if (arr[i] == arr[j]) {
				arr.splice(j,1);
				j--;
			}
		}
	}
	console.log(arr);
</script>

6、使用非递归方式对数组 [8, 7, 2, 1, 0, 5, 1, 9, 2] 执行折半查找

<script type="text/javascript">		
	// 折半查找
	function get(arr, key) {
		var low = 0;
		var high = arr.length - 1;
		while (low <= high) {
			var mid = Math.floor((low + high) / 2);
			if (key == arr[mid]) {
				return mid;
			} else if (key > arr[mid]) {
				low = mid + 1;
			} else if (key < arr[mid]) {
				high = mid - 1;
			}
		}
		return -1;
	}
	console.log(arr,0);
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
HCIE-R&S Lab-Option-C1是华为公司为网络工程师设计的一项实验室选项。该实验室选项是华为高级认证网络工程师(HCIE)路由与交换方向的实验室考试之一。 HCIE-R&S Lab-Option-C1的主要目的是测试网络工程师在实际网络环境中配置和故障排除的能力。实验室选项C1主要涉及路由器、交换机、网络安全、IPv6等方面的知识与技能。通过这一实验室选项的考试,网络工程师需要证明他们具备在各种复杂网络情境下解决实际问题的能力。 在实验室选项C1中,考试的内容主要包括网络规划与设计、网络配置与部署、网络故障排除与恢复等方面。考生需要使用华为的设备和平台,在虚拟化环境中完成一系列的实验任务。考试会在一个特定的时间内进行,考生需要在规定的时间内完成实验任务并提交相应的实验报告。 通过HCIE-R&S Lab-Option-C1的考试,网络工程师可以获得HCIE认证,并证明他们具备高级路由与交换方面的技能和知识。这个认证可以有效提升网络工程师的职业竞争力,使他们在网络行业中脱颖而出。 总体而言,HCIE-R&S Lab-Option-C1是华为为网络工程师提供的一项实验室选项,旨在测试他们在实际网络环境中的能力。这个选项涵盖了路由器、交换机、网络安全等方面的知识与技能,并通过考试来评估网络工程师的实际运用能力。它对网络工程师职业发展有着积极的意义。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

台下看戏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值