<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Day2</title>
<style>
/* *{
border: 0;
padding: 0;
} */
ul{
border: 0;
padding: 0;
}
#imggallery li{
list-style: none;
display: inline-block;
}
#img2{
width: 640px;
height: 400px;
}
.hd {
height: 50px;
width: 100%;
clear: both;
}
.hd span{
box-sizing: border-box;
float: left;
height: 50px;
width: 100px;
border: 1px solid black;
line-height: 50px;
text-align: center;
margin-right: -1px; /* 相邻边框消除 */
}
.hdOn{
background-color: pink;
}
.bd{
width: 400px;
height: 400px;
}
ol{
list-style: none;
padding: 0;
margin: 0;
}
ol li{
display: none;
}
.bdOn{
background-color: pink;
display: block;
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<!-- 禁用文本框 -->
<input type="button" value="禁用" id="btn1">
<input type="text" name="" id="tx1">
<script>
document.getElementById("btn1").onclick = function(){
var tx1 = document.getElementById("tx1");
tx1.disabled = true;
};
</script>
<!-- 阻止超链接跳转 在点击事件中用return false 阻止默认的浏览器点击事件,也可以添加新事件-->
<a href="http://www.baidu.com" onclick = "return false">百度</a>
<a href="http://www.baidu.com" onclick = "alert('哈哈'); return false">百度</a>
<a href="http://www.baidu.com" onclick="f1()">百度</a> <!-- 这样不能阻止跳转,因为f1结果为false,而不是return false -->
<a href="http://www.baidu.com" onclick="return f1()">百度</a> <!-- 正常 -->
<a href="http://www.baidu.com" id="ak">百度</a>
<script>
function f1(){
alert("嘻嘻");
return false;
}
document.getElementById("ak").onclick = function(){
alert("嘻嘻");
return false;
};
</script>
<!-- 可以创建一个common.js表示公共的js文件并引用,里面存放一些公共的函数 -->
<!-- 相册案例 -->
<ul id = "imggallery">
<li><a href="images/1.jpg" ><img src="images/1-small.jpg" alt=""></a></li>
<li><a href="images/2.jpg" ><img src="images/2-small.jpg" alt=""></a></li>
<li><a href="images/3.jpg" ><img src="images/3-small.jpg" alt=""></a></li>
<li><a href="images/4.jpg" ><img src="images/4-small.jpg" alt=""></a></li>
</ul>
<div id="dv1">
<img src="" alt=" " id="img2">
</div>
<script src="common.js">//创建一个common.js表示公共的js文件并引用,里面存放一些公共的函数</script>
<script>
var imgObj = my$("imggallery").getElementsByTagName("a");
console.log(imgObj);
for(var i = 0; i < imgObj.length; i++){
imgObj[i].onclick = function(){
my$("img2").src = this.href;
return false;
};
}
</script>
<!-- 案例:改变背景颜色 -->
<input type="button" value="变色" id="btn2">
<ul id="uu">
<li>1234567</li>
<li>1234567</li>
<li>1234567</li>
<li>1234567</li>
<li>1234567</li>
<li>1234567</li>
<li>1234567</li>
<li>1234567</li>
</ul>
<script>
my$("btn2").onclick = function(){
var liObj = my$("uu").getElementsByTagName("li");
for (i = 0; i < liObj.length; i++){
// if (i%2==0) {
// liObj[i].style.backgroundColor = "red";
// }else{ //奇红偶黄注意i从零开始
// liObj[i].style.backgroundColor = "yellow";
// }
liObj[i].style.backgroundColor = i % 2 == 0 ? "red" : "yellow";
}
};
</script>
<!-- onmouseover事件:鼠标进入 onmouseout事件:鼠标离开 -->
<ul id="uu2">
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
<li>fasfgaaabzc</li>
</ul>
<script>
var liObj2 = my$("uu2").getElementsByTagName("li");
for (i = 0; i < liObj2.length; i++) {
liObj2[i].onmouseover = function(){
this.style.backgroundColor = "yellow";
};
liObj2[i].onmouseout = function(){
this.style.backgroundColor = "";
};
}
</script>
<!-- 一些其他的获取元素的方式 -->
<!-- 根据name属性值获取表单里的标签元素:getElementsByName() -->
<!-- 根据类名获取标签元素:getElementsByClassName() -->
<!-- querySelector(选择器)根据选择器返回第一个元素 -->
<!-- querySelectorAll(选择器)根据选择器返回所有元素伪数组 -->
<!-- 一些其他DOM事件 -->
<!-- onfocus获得焦点事件 -->
<!-- onblur失去焦点事件 -->
<!-- 案例:搜索框 -->
<input type="text" value="请输入搜索内容" id="sousuo" style="color:gray; outline: none;">
<script>
var txt = document.querySelector("#sousuo"); //与document.getElementById("sousuo")效果一样
txt.onfocus = function(){
if (this.value == "请输入搜索内容") {
this.value = "";
this.style.color = "black";
}
};
txt.onblur = function(){
if(this.value == ""){ //这里改成this.value.length == 0更好,因为比较字符串更浪费资源
this.value = "请输入搜索内容";
this.style.color = "gray";
}
};
</script>
<!-- innerText 与 innerHTML -->
<div id = "div2" style="width: 100px;height: 100px;border: 1px dotted red;">
</div>
<script>
my$("div2").innerText = "<p>这是一个p</p>"; //innerText不能添加标签,只能设置文本
my$("div2").innerHTML = "<p>这是一个p</p>"; //innerHTML可以设置新标签,当然也可以设置文本内容
console.log(my$("div2").innerText); //innerText只能获取文本内容
console.log(my$("div2").innerHTML); //innerHTML可以获取内部的标签和文本
</script>
<!--innerText 和textContent的区别差异:
1. textContent不会理会html格式,会输出隐藏的文本
2. innerText会根据标签里面的样式输出显示出的文本
3.兼容性:
innerText 谷歌 火狐 IE8都支持
textContent IE8不支持
-->
<!-- 兼容代码:如果有的方法浏览器不支持的话,那么得到的是undefined
根据这个原理编写兼容代码
以textContent和innerText为例
-->
<script>
function setInnerText(element, text){ //编写一个设置文本内容的函数
if(typeof element.textContent == "undefined"){
element.innerText = text; //如果不支持textContent,则利用innerText
}else{
element.textContent = text;//支持则利用textContent
}
}
function getInnerText(element){ //编写一个获取文本内容的函数
if(typeof element.textContent == "undefined"){
return element.innerText; //如果不支持textContent,则利用innerText
}else{
return element.textContent;//支持则利用textContent
}
}
</script>
<!-- 可以自定义Html标签中没有的属性--自定义属性,用来存放一些数据
但是自定义属性不能通过DOM得到的标签对象直接获得,需要使用getAttribute("自定义属性")来获取
也可以在OMD对象中设置自定义属性,如果使用.的方式设置,则不能在HTML中添加属性,只能添加到DOM对象上,
可以使用setAttribute("自定义属性名","自定义属性值")来设置,会添加到Html对象中
可以使用removeAttribute("自定义属性名")来移除html标签中的自定义属性,也可以移除HTML固有的属性
-->
<h3>点击英雄查看终结技</h3>
<p terminus = "重力喷涌" style="cursor:pointer;">查莉亚</p>
<p terminus = "原始暴怒" style="cursor:pointer;">温斯顿</p>
<p terminus = "鸡飞狗跳" style="cursor:pointer;">路霸</p>
<p terminus = "裂地猛击" style="cursor:pointer;">大锤</p>
<script>
var pObj = document.getElementsByTagName("p");
for(i = 0; i<pObj.length; i++){
pObj[i].onclick = function(){
// alert(this.terminus); //这样不能得到自定义属性值
alert(this.getAttribute("terminus")); //这样可以
}
}
</script>
<!-- 案例:切换标签改变 -->
<div class="hd" id="hd">
<span class="hdOn">新闻</span>
<span>娱乐</span>
<span>体育</span>
<span>科技</span>
</div>
<div class="bd" id="bd">
<ol>
<li class="bdOn">这是新闻模块</li>
<li>这是娱乐模块</li>
<li>这是体育模块</li>
<li>这是科技模块</li>
</ol>
</div>
<script>
var hds = document.getElementById("hd").getElementsByTagName("span");
var bds = document.getElementById("bd").getElementsByTagName("li");
//循环遍历给hds添加点击事件
for (var i = 0; i < hds.length; i++) {
hds[i].setAttribute("num",i); //设置一个自定义属性为索引
hds[i].onclick = function(){
//1.所有hd的模块样式清零
//2.被点击的模块修改样式
for(j = 0;j <hds.length; j++){
hds[j].className= "";
}
this.className = "bdOn";
//1.所有的bd模块隐藏
//2.对应的bd模块修改样式
for(k = 0;k < hds.length; k++){
bds[k].className = "";
}
bds[this.getAttribute("num")].className = "bdOn" //无法获得对应的索引?,办法:利用setAttribute设置一个自定义属性存放索引,然后获取this的该属性值以利用
};
}
</script>
</body>
</html>