前端-js基础,做特效之前要掌握的基础知识

1.获取某个dom对象

<div class="showdiv" id="showdiv">
	<div class="title">
		<div class="c1"></div>
		<div class="c1"></div>
		<div class="c1"></div>
	</div>
	<div class="title1"></div>
</div>
<div class="bottomdiv"></div>
<script type="text/javascript">
	// 获取的是id为showdiv的dom标签
	var showdiv = document.getElementById("showdiv");

	// 获取所有class=c1的div
	var div_all_c1 = document.getElementsByClassName("c1");
	// 或
	var div_all_c1 = showdiv.getElementsByClassName("c1");
	// 或
	var div_all_c1 = showdiv.children[0].children;

	//获取class=bottomdiv的div
	var bottomdiv = document.getElementsByClassName("bottomdiv")[0];

	//获取所有的div
	var divs = document.getElementsByTagName("div");

    //IE678不支持【返回获取到的元素的第一个】必须写完整选择器
    var divs = document.querySelector(".box");
    var divs = document.querySelector("#d1")
    var divs = document.querySelector("div")


</script>

2.js中的变量名、方法名等可以用 【钱】、【下划线】、【字母】开头,所以

<div id="box"></div>
<script type="text/javascript">
	function $(domid){
		return document.getElementById(domid);
	}
	var box = $("box");
</script>

3.获取dom对象的亲戚们

<div class="showdiv" id="showdiv">
	<div class="title" id="title">
		<div class="c1"></div>
		<div class="c1"></div>
		<div class="c1"></div>
	</div>
	<div class="title1"></div>
</div>
<div class="bottomdiv"></div>
<script type="text/javascript">
	function $(domid){
		return document.getElementById(domid);
	}
	var title = $("title");

	// 这是title的爹。很准,没有兼容问题
	var showdiv= title.parentNode;

	//这是title的(空格)兄弟,高级浏览器会将空格和回车看成他兄弟
	//  IE 678不会
	//,所以一般很少这么写,因为获取的很可能是空格,不对
	var title1 = title.nextSibling ;
	//这是title的兄弟 title1, 高级浏览器支持这个属性
	//但是IE678不认识
	//所以也不这么写,因为兼容问题。
	var title1 = title.nextElementSibling;
	//兼容写法这样写
	//但是一般情况下=>不用
	//先支持高级浏览器,如果获取不到这个元素,说明是IE678,换nextSibling
	var title1 = title.nextElementSibling || title.nextSibling;
	//同理还有上一个兄弟(空格兄弟?换行兄弟?)
	var title =  title1.previousElementSibling || title1.previousSibling;

	//第一个孩子
	//同上,可能是个空格孩子?或者是个回车孩子?
	var c1_one = title.firstChild;
	//最后一个孩子
	//同上,可能是个空格孩子?或者是个回车孩子?
	var c1_last = title.lastChild;

	//孩儿们
	// 如此可获取所有孩儿们,(包括空格孩子)
	// 配合nodeType==1 使用,来判断是否为标签元素
	// 麻烦,所以也不用
	var c1s = title.childNodes;
	if(c1s[0].nodeType==1){
		console.log("是个真娃");
	}
	//孩儿们
	// 这个很好用,经常用。
	// 但是需要注意,孩子里不能有注释 <!-- -->,因为注释也算一个娃
	var c1s = title.children;

	// 总结,我们经常用的两个。
	title.parentNode;
	title.children;
</script>

4.给dom对象设置样式,只要是CSS中写的部分都用dom.style.XXX = "";

但是为了泛用性和参数可变性,一般可以改写为dom.style["XXX"]="";

<div class="box"></div>
<script type="text/javascript">
	function $(domid){
		return document.getElementById(domid);
	}
	var box = $("box");
	box.style.background = "url(images/01.jpg) no-repeat";
    box.style["width"] = "200px";
</script>

5.dom对象的创建,添加,克隆等

<div class="showdiv" id="showdiv">
	<div class="title" id="title">
		<div class="c1"></div>
		<div class="c1"></div>
		<div class="c1"></div>
	</div>
	<div class="title1"></div>
</div>
<script type="text/javascript">
	function $(domid){
		return document.getElementById(domid);
	}
	var title = $("title");
	var span = document.createElement("span");
	span.style.display = "block";
	span.style.width = "300px";
	span.style.height = "200px";
	span.innerHTML = "雷吼斌抖啊!,我母鸡啊";
	span.onclick = function(){
		console.log(this.innerHTML);
	}
	//让	title 他爹添加这个标签,这样这个span就变成了
	// title的最后一个兄弟
	title.parentNode.appendChild(span);
	// 将title复制一份,追加到他爹后面
	// true 深拷贝。false浅拷
	title.parentNode.appendChild(title.cloneNode(true));
	//也是追加dom标签,不过是指定了位置,如果不指定,默认放最后
	//如下,是给title添加了一个哥哥,这个哥哥的位置是父亲下第一个元素
	title.parentNode.insertBefore(
		title.cloneNode(false) // 待插入的元素
		, title.parentNode.children[0] // 插入到谁前面
		);

</script>

5执行完毕后如下图

6.时间相关

<script type="text/javascript">
	var date = new Date(); // 2022-04-02 15:12:32 153
	var yyyy = date.getFullYear();//年[yyyy]=>2022
	var MM = date.getMonth();//月[0一月,1二月......11十二月]=>3
	var dd = date.getDate();//日[1-31]=>2
	var weekDay = date.getDay();//周几[0周日,1周一......6周六]
	var HH = date.getHours();//小时[24]=>15
	var mm = date.getMinutes();//分种[60]=>12
	var ss = date.getSeconds();//秒钟[60]=>32
	var ms = date.getMilliseconds();//毫秒[1000]153

	//从1970.01.01到现在的毫秒
	var total_ms = date.getTime();//1648883552153	
</script>

7.定时器【一般情况下,在调用setInterval之前,最好都调用一次clearInterval(timerid);

        这样可以避免很多bug

<script type="text/javascript">
    var timerid = 0;
    //fun 反复待执行方法
    //30 间隔的毫秒数
    timerid = setInterval(fun, 30);

    //fun 只执行一次的方法
    //30 多少毫秒后才执行
    timerid = setTimeout(fun, 30);
</script>

8.数组的常用方法(json对象也可以【这个狠tm重要】

var arr = [1,4,7];
// push()方法可以向数组的末尾添加一个或多个元素,并返回新的长度
arr.push(9,11);
console.log(arr);

var arr = [1,4,7];
// unshift() 方法可以向数组的前面添加一个或多个元素,并返回新的长度
arr.unshift(9,11);
console.log(arr);

var arr = [1,4,7];
// pop() 方法可以删除数组的最后一个元素,并返回这最后一个值
var temp = arr.pop();
console.log("arr:"+arr);
console.log("temp:"+temp);

var arr = [1,4,7];
// shift() 方法可以删除数组的第一个元素,并返回这第一个值
var temp = arr.shift();
console.log("arr:"+arr);
console.log("temp:"+temp);

 

8.绑定事件

//给box1绑定事件f1,特点:唯一,如果后续还有onclick绑定事件,那么只保留后续的绑定
box1.onclick = f1;
//特点:可以绑定多个,当被click的时候,被绑定的方法都会执行
box1.addEventListener("click", f1);
//接触绑定某个方法
box1.removeEventListener("click", f1);

function f1() {
    alert(10);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值