JavaScript初探二
//----------总结01.查找dom元素 document.getElementById();//通过id获取一个dom元素
document.getElementsByClassName();//通过class获取dom数组
document.getElementsByTagName();//通过标签名获取dom数组
//02.修改dom元素 dom.type = "text"//type属性
dom.innerHTML//双标签的文本值 这里注意innerText
dom.value//修改单标签的文本值,比如input
document.getElementById().style.height//注意样式需要通过style点出来,高度,宽度需要添加单位
1.删除dom元素
dom元素.parentNode.removeChild(dom元素)//dom元素不能自己删除自己,必须通过父元素删除自己
//删除的dom元素还在内存中,只是将他从dom树里面删除了
//04.创建dom元素 document.createElement("input");//在js中所有dom元素的创建都是通过这种方式,传入不同的标签名,返回不同的元素
dom元素.appendChild(newNode)//创建好的dom元素必须将他添加到dom树里面去才能看的到
//05.克隆dom元素
dom元素.cloneNode(true);//所有的dom元素都有这个方法,传入false 只克隆元素本身,传入 true 子元素一起克隆
//06.a标签引入js代码
<a href="javascript:这里写js代码">测试用</a>//在javascript:之后写js代码
//07.select标签的特殊
//01.通过设置select.value 可以修改被选中的option.但是设置的value值,必须有相应的option标签存在,否则没效果
//02.修改了选中的option标签会触发select标签的 onchange事件
//08.第二种绑定0级dom事件的方式
<input type='button' onclick='这里写的是js代码'>//注意这样绑定的方法体内部的this
//09.快速获取父节点
dom元素.parentNode
//10.注意
写js的时候可能没有提示,大胆的写上去把!!!!!
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
//01.变量定义
//var fox = 123;
//alert(fox);
//fox = "小狐狸"; //02.对象的写法
//对象的直面两标识发里面 属性名 可以加"" 也可以不加
//加了双引号:叫做 json格式
//不加双引号:js的字面量表示法
//var fox = new Object();
//fox = {
// "name":"小二黑",age:18
//} ////03.数组,长度可变,object
//var foxArr = new Array();
//foxArr = [1, 2, 3, 4, { "name": "fox", "age": 19 }];
//foxArr[foxArr.length]//数组新增一位 ////04.判断语句
////string 对象 数组 数字(除0) true
////false 0 NaN null undefined
//function sayhi() { }
//if (sayhi) { //}
////05选择 break 可以不写 会向下执行
//switch (switch_on) {
// default: //}
//06循环语句
//while (true) { //}
//do { //} while (true);
//for (var i in o) {
// o[i]
//}
//for (var i = 0; i < length; i++) { //}
//07方法
//new Function 里面的方法体如果只有一行 不需要分号,如果多行 必须用分号隔开
//function sayHi(name, age) {
// return new Function("alert(123)");
//}
//var returnFunc = sayHi();
//returnFunc(); ////08. dom(文档对象模型) dom对象和dom树
////每一个标签都是一个dom对象,浏览器解析完毕所有html标签以后 生成dom树
//document.getElementById(); //通过id 获取单个
//document.getElementsByClassName();//通过class 获取多个
//document.getElementsByTagName();//通过标签名 获取多个 ////09bom 浏览器对象模型 可以理解为是一个类
////window对象可以理解为 是bom类new出来的对象
////在页面中定义的所有全局变量,都是window的属性
//// window
//var haha = "123"; ////方法体里面的this 看调用这个方法的时候 这个方法由谁点出来
//function sayHi() {
// alert(this);
//}
//---------------分割线问题解答
//01function(直接创建的时候使用) Function(new 方法对象的时候使用)
//除了写法不同,其他都一样,都是创建了一个方法对象 //function sayHello() { }
//new Function(); //02
//var people = sayHello();//执行sayHello方法 将方法的返回值赋给people
//var smallPeople = sayHello;//直接将方法的引用地址给smallPeople </script>
</head> <body>
<input type="button" id="btnTest" />
</body>
</html>
<script type="text/javascript">
//03匿名函数
//匿名函数 就是定义的时候不需要写名字的函数,但是他也会在内存中创建一个方法对象
//document.getElementById("btnTest").onclick = function () { alert("123"); }
//function sayHi() {
// alert("123");
//} //document.getElementById("btnTest").onclick = sayHi; //变量必须定义在方法的下面------
var haha = function () {
alert("捏哈哈");
}
document.getElementById("btnTest").onclick = haha;
//对于方法,浏览器做了优化,只有在调用这个方法的时候,才会去页面里面找
//document.getElementById("btnTest").onclick = sayHello;
//function sayHello() {
// alert("123");
//}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<input type="button" value="docment绑定" id="btnDoc"/>
<input type="button" value="标签内绑定" id="btnSurprise" onclick="sayThis(this);"/>
</body>
</html>
<script type="text/javascript"> //0级dom事件绑定方法1 直接通过onclick=xxx绑定的
document.getElementById("btnDoc").onclick = function () {
alert(this);
}
alert(document.getElementById("btnDoc").onclick);
//02.直接写在标签里面的 事件属性 用=号赋值 =号后面写的是 js代码
//直接写在标签内部的onclick属性 浏览器在解析的时候 会自动生成一个方法 将这段js代码包起来
alert(document.getElementById("btnSurprise").onclick);
//全局函数
function sayThis(SomeObj) {
alert(this+"||"+SomeObj)
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
ol {
list-style: none;
} li {
text-align: center;
border: 1px solid #0094ff;
width: 300px;
margin: 0 auto;
}
</style>
</head>
<body>
<ol>
<li>
<label>NumA:</label><input type="text" id="numA" /></li>
<li>
<label>NumB:</label><input type="text" id="numB" /></li>
<li>
<input type="button" value="+" onclick="doCom('+')" />
<input type="button" value="-" onclick="doCom('-')" />
<input type="button" value="*" onclick="doCom('*')" />
<input type="button" value="/" onclick="doCom('/')" /></li>
<li>
<label>Result:</label><input type="text" id="Result" /></li>
</ol>
</body>
</html>
<script type="text/javascript"> function doCom(method) {
var numA = document.getElementById("numA").value.trim();
var numB = document.getElementById("numB").value.trim()
switch (method) {
case "+":
if (checkNum(numA, numB)) {
//修改结果文本框里面的value字
document.getElementById("Result").value = Number(numA) + Number(numB);
} else {
alert("请正确输入");
}
break;
case "-":
if (checkNum(numA, numB)) {
//修改结果文本框里面的value字
document.getElementById("Result").value = Number(numA) - Number(numB);
} else {
alert("请正确输入");
}
break; case "*":
if (checkNum(numA, numB)) {
//修改结果文本框里面的value字
document.getElementById("Result").value = Number(numA) * Number(numB);
} else {
alert("请正确输入");
}
break; case "/":
if (checkNum(numA, numB)) {
//修改结果文本框里面的value字
document.getElementById("Result").value = Number(numA) / Number(numB);
} else {
alert("请正确输入");
}
break;
default: }
}
//检查两个文本框里面的是否是数字
function checkNum(numA, numB) { //判断是否不是一个数字
if (window.isNaN(numA) == false && numB != "" && numA != "" && window.isNaN(numB) == false) {
return true;
} else {
return false;
}
} </script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
table {
border: 1px solid #0094ff;
border-collapse: collapse;
width: 300px;
} td {
border: 1px solid #0094ff;
} div {
border: 1px solid #0094ff;
width: 298px;
}
</style>
</head>
<body>
<table id="tbList">
<tbody id="tbListBody">
<tr>
<td>序号</td>
<td>姓名</td>
<td>技能</td>
<td>操作</td>
</tr>
</tbody>
</table>
<div>
<input type="checkbox" id="chkAll" /><label for="chkAll" style="cursor: pointer">全选</label>
<a href="javascript:void(0)" onclick="DoDelChecked()">删除选中</a>
</div>
</body>
</html>
<script type="text/javascript">
//01.table 浏览器在解析的时候,会自动生成一个tbody 然后把tr放到tbody里面去
//如果在table已经生成完毕在 table.appendChild(tr)添加tr 那么就是加到 table下面
var dataArr = [
{ "name": "柯震东", "skill": "吸毒" },
{ "name": "李代沫", "skill": "唱歌" },
{ "name": "张默", "skill": "像房祖名" },
{ "name": "房祖名", "skill": "像张默" },
{ "name": "郭美美", "skill": "吃毒大米" },
]
//02.使用代码为table添加tr
for (var i = 0; i < dataArr.length; i++) {
//02.1创建一个tr
var trCreate = document.createElement("tr");
//02.2生成td分为两种
//单元格00
var td00 = document.createElement("td");
td00.innerHTML = i + 1 + "<input type='checkbox'class='chkOne'>";
trCreate.appendChild(td00);
//单元格01
var td01 = document.createElement("td");
td01.innerHTML = dataArr[i].name;
trCreate.appendChild(td01);
//单元格02
var td02 = document.createElement("td");
td02.innerHTML = dataArr[i].skill;
trCreate.appendChild(td02);
//单元格03
var td03 = document.createElement("td");
td03.innerHTML = "<a href='javascript:void(0)' onclick='doDelTr(this)'>删除该行</a>";
trCreate.appendChild(td03);
//将tr添加到tbody里面
// document.getElementById("tbListBody").appendChild(trCreate);tbList
document.getElementById("tbList").appendChild(trCreate);
}
//02.5checked这个属性有点特殊,直接写在标签里面,不给值 就是被选中; 给任何值也是被选中
//如果使用js去修改checked属性 给true 就是选中 给false 就是不选中
//document.getElementById("chkAll").checked = false; //03.为全选框设置点击事件
document.getElementById("chkAll").onclick = function () {
//alert(this.checked);
//for循环 将所有的单选框的选中状态设置跟全选框一样就好
var chkOneObjs = document.getElementsByClassName("chkOne");
for (var i = 0; i < chkOneObjs.length; i++) {
chkOneObjs[i].checked = this.checked;
}
} //-----------------分割线 方法
//a标签的this 就是他的href属性
function doDelTr(aObj) {
if (confirm("你想好了?")) {
// alert(aObj);
//根据a标签 获取他所在的tr
// a标签 td tr
var delTr = aObj.parentNode.parentNode; //通过tr的父节点 删除tr
//tr tr的父节点
delTr.parentNode.removeChild(delTr);
} else {
alert("不要手贱啊");
}
} //删除选中的方法
function DoDelChecked() {
//获取所有的单选框
var chkOneObjs = document.getElementsByClassName("chkOne");
//循环 判断 单选框是否被选中
for (var i = chkOneObjs.length-1; i >=0; i--) {
if (chkOneObjs[i].checked==true) {
//通过单选框 获取所在tr
// 单选框 td tr
var delTr = chkOneObjs[i].parentNode.parentNode;
//通过tr获取父节点 调用父节点的删除方法
delTr.parentNode.removeChild(delTr);
}
}
//如果被选中 就删除
//否则 不干事情
} </script>
图片文字切换
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
div {
border:1px solid #0094ff;
margin:0 auto;
}
#divImg {
width:300px;
height:192px;
}
#divInfo {
width:300px;
height:30px;
}
li {
float:left;
border:1px solid #0094ff;
height:15px;
width:25px;
text-align:center;
line-height:15px; }
ol {
list-style:none;
position:absolute;
top:168px;
left:595px; }
</style>
</head>
<body>
<div id="divImg">
<ol>
<li key="button1">1</li>
<li key="button2">2</li>
<li key="button3">3</li>
<li key="button4">4</li>
</ol>
</div>
<div id="divInfo"></div>
</body>
</html>
<script type="text/javascript">
//图片信息数据存储
var imgInfoArr = [
{ "key": "button1", "imgPath": "/img/1.jpg", "imgInfo": "两个小loli" },
{ "key": "button2", "imgPath": "/img/2.jpg", "imgInfo": "嫦娥本月" },
{ "key": "button3", "imgPath": "/img/3.jpg", "imgInfo": "美女与野兽" },
{ "key": "button4", "imgPath": "/img/4.jpg", "imgInfo": "学生装cosplay" }
];
//为数据对象绑定方法--面向对象
//循环判断传入的key 符合哪一个,返回符合的对象
imgInfoArr.GetObjByKey = function (key) {
for (var i = 0; i < this.length; i++) {
if (this[i].key == key) {
return this[i];
}
}
}
//---------------上面是准备数据下面是绑定方法
//获取所有的li标签
var liObjs = document.getElementsByTagName("li");
//为li标签绑定点击事件--通过dom元素.getAttribute("属性名")可以获取自定义属性
for (var i = 0; i < liObjs.length; i++) {
liObjs[i].onclick = function () {
//获取自定义属性 key
var myKey = this.getAttribute("key");
//通过key去获取对象
var imgInfoObj = imgInfoArr.GetObjByKey(myKey);
//将对象的属性设置给 图片div 还有文字div
//修改背景图片
document.getElementById("divImg").style.backgroundImage = "url(" + imgInfoObj.imgPath + ")";
//修改文字
document.getElementById("divInfo").innerHTML = imgInfoObj.imgInfo; }
} ////根据key获取 对象的方法
//function GetImgObj(key) {
// for (var i = 0; i < imgInfoArr.length; i++) {
// if (imgInfoArr[i].key == key)
// {
// return imgInfoArr[i];
// }
// }
//}
//var someObj=GetImgObj("button3");
//alert(someObj.key+"|"+someObj.imgPath+"|"+someObj.imgInfo); </script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
/*//渲染树*/
#divBox {
height: 100px;
width: 100px;
border: 1px solid #0094ff;
}
</style>
</head>
<body>
<div id="divBox" ></div>
</body>
</html>
<script type="text/javascript">
//绑定点击事件
document.getElementById("divBox").onclick = function () {
//01.获取dom元素标签内部的样式
////获取原有样式
//var oldHeight = parseInt(this.style.height);
////累加
//oldHeight += 10;
////设置回去
//this.style.height = oldHeight + "px"; //02.获取dom元素的样式--无论在内部 还是在 style标签中
//通过这种方式拿到的样式 是只读的
alert(window.getComputedStyle(this).height);
this.style.height;
} </script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
ol {
list-style:none;
}
li {
border:1px solid #0023ff;
height:20px;
width:100px;
}
</style>
</head>
<body>
<select id="selList">
<option>鱼香肉丝</option>
<option>水煮肉片</option>
<option>鱼香茄子</option>
</select>
<ol>
<li id="liEdit">水煮肉片</li>
</ol>
<input type="button" id="edit" value="编辑"/>
<input type="button" id="saveEdit" value="保存修改"/>
</body>
</html>
<script type="text/javascript">
//为按钮添加点击事件
document.getElementById("edit").onclick = function () {
//为li标签 追加一个 子节点 select标签
//dom元素有一个clone方法 传的布尔值 表示 克隆的深浅,
var selClone = document.getElementById("selList").cloneNode(true);
//设置克隆的select标签的 option的选中状态
//如果 option标签 没有添加value值,那么 option标签的 innerHTML就是他的value 可读可写
//设置select标签的value值 为option标签有的 ,那么就相当于 选中了那个option标签
selClone.value = document.getElementById("liEdit").innerHTML;
//清空问本质
document.getElementById("liEdit").innerHTML = "";
//将克隆的select标签 追加到li标签里面
document.getElementById("liEdit").appendChild(selClone);
//修改克隆出来的select标签的id
selClone.id = "editSel";
} //为保存修改按钮添加点击事件
//id虽然唯一,但是重复也不会报错
//取值的时候 从上到下查找.找到了符合要求的一个 就不继续找了
document.getElementById("saveEdit").onclick = function () {
// alert(document.getElementById("editSel").value);
document.getElementById("liEdit").innerHTML = document.getElementById("editSel").value;
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
div {
border:1px solid #0094ff;
height:100px;
width:100px;
} </style>
</head>
<body>
<!--使用a标签引入js代码 javascript:这里写js代码-->
<a href="javascript:alert('大家下午好,不要打瞌睡了');">点击打招呼</a>
<div id="divBox">
div的id为divBox
<input type="button" id="btnTest" value="id=btnTest" />
</div>
</body>
</html>
<script type="text/javascript">
//为按钮添加点击事件
document.getElementById("btnTest").onclick = function () {
alert(this.id);
//删除自己-通过parentNode获取父节点,然后调用父节点的删除方法
//this.parentNode.removeChild(this);
//parentElement有浏览器兼容问题
this.parentElement.removeChild(this);
} </script>
JavaScript初探二的更多相关文章
- JavaScript初探 二 (了解数据)
JavaScript初探 (二) JavaScript 事件 HTML事件 HTML事件是可以在浏览器或用户做的某些事情 HTML事件的例子: HTML网页完成加载 HTML输入字段被修改 HTML按 ...
- 初探JavaScript(二)——JS如何动态操控HTML
除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...
- JavaScript初探 一(认识JavaScript)
JavaScript 初探 JavaScript插入HTML中 内嵌的Js代码 <!DOCTYPE html> <html> <head> <meta cha ...
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...
- 学习javascript数据结构(二)——链表
前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
- 使用JavaScript生成二维码教程-附qrcodejs中文文档
使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimjs/qrcodejs DIV <div id="qrco ...
- 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo
有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...
- 2、JavaScript 基础二 (从零学习JavaScript)
11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...
随机推荐
- 20155205 2016-2017-2 《Java程序设计》第3周学习总结
20155205 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 定义类的两种方法(new和this的用法) 只要有一个类定义,编译程序就会产生一个. ...
- 关于QT建立项目中遇到的相关问题的处理办法
关于QT建立项目中遇到的相关问题的处理办法 1.在QTCreater中新建一个空的工程时,第一次运行会抱一个错误,如下: -1: error: LNK1123: 转换到 COFF 期间失败: 文件无效 ...
- The writing on the wall
题意:一个n*m的方格矩阵,有的格子被涂成了黑色,问该矩阵中有多少个子矩阵,子矩阵不包含黑色格子; 思路:对于一个长为L, 高为H的无黑点矩阵中包含的高为H的子矩阵个数为L+(L- ...
- int与String互转
1.把String转化为int类型 Integer.valueOf(i); 2.把int转化为String 1)String.valueOf(i) 2)Integer.toString(i) 3)i+ ...
- django天天生鲜项目
.后台admin管理天天生鲜商品信息 models里 from django.db import modelsfrom tinymce.models import HTMLField #需要pip安装 ...
- 查询指定网段可用IP脚
方法一:linux命令 1.fping安装: yum install fping 2.fping使用: fping -g ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- python- 动态加载目录下所有的类
# 背景 自动化测试框架中model层下有很多类,用来操作mysql的,使用的时候需要把全部的类加载进来,需要使用到动态加载类 # 解决方法 使用pkgutil,内置的方法,常用的话有两个方法 ite ...
- Spring IOC 容器源码分析系列文章导读
1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本.经过十几年的迭代,现在的 Spring 框架已经非常成熟了.Spring ...
- 【入门推荐】SQL注入进行WebShell渗透测试的基础概览
作者:zero 本文为SQL基本注入的进阶文章,如有任何疑问请查看: SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html 导语: 利用SQL ...
- Redis---ZipList(压缩列表)
1.概述 压缩列表是一块连续的内存空间,元素之间紧挨着存储,没有任何冗余空间. Redis 为了节约内存空间使用,zset 和 hash 容器对象在元素个数较少的时候,采用压缩列表 (ziplist) ...