https://www.cnblogs.com/haiyan123/p/7653032.html

一、JS中for循环遍历测试

for循环遍历有两种

第一种:是有条件的那种,例如    for(var i = 0;i<ele.length;i++){}

第二种:for (var i in li ){}

现在我们来说一下测试一下第二种(数组和obj的)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var arr = [11,22,33,44,55];
var obj = {'username':'zzz','agr':20}; //js中的这个类似字典的不叫字典,而是一个对象
for (var i in obj){
console.log(i); //拿到的是键
console.log(obj[i]) //值
}
for (var j in arr){
console.log(j); //拿到索引
console.log(arr[j]) //拿到值
}
</script>
</body>
</html> 测试for循环

二、获取value属性值

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <input type="text" id="c1">
<select name="pro" id="s1">
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">广东</option>
<option value="4">湖南</option>
</select>
<button>show</button> <script>
var ele_button = document.getElementsByTagName("button")[0]; ele_button.onclick = function () {
var ele_input = document.getElementById("c1");
var ele_select = document.getElementById("s1");
console.log(ele_select.value);
ele_input.value = ele_select[ele_select.value - 1].innerText;
} </script>
</body>
</html>

三、二级联动

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <select name="" id="provinces">
<option value="">请输入省份</option>
<!--<option value="1">北京</option>-->
<!--<option value="2">上海</option>-->
<!--<option value="3">广东</option>-->
<!--<option value="4">湖南</option>-->
</select> <select name="" id="citys">
<option value="">请选择城市</option>
</select> <script>
// var a={name:"alex"};
// var b={"name":"alex"};
// console.log(a.name); // alex
// console.log(b["name"]); // alex // data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
// console.log(data); // {河北省: Array(2), 山西: Array(2), 陕西: Array(2)}
// console.log(typeof data); // object
// console.log(data["河北省"]); // (2) ["石家庄", "廊坊"]
// console.log(data.河北省); // (2) ["石家庄", "廊坊"]
//
// for (var i in data) {
// console.log(i); // 键 河北省 。。。
// console.log(data[i]);
// } data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
var pro_ele=document.getElementById("provinces");
var city_ele=document.getElementById("citys") for (var i in data) {
var ele=document.createElement("option");
ele.innerHTML = i;
pro_ele.appendChild(ele);
} pro_ele.onchange = function () {
console.log(this.selectedIndex);
console.log(this.options[this.selectedIndex]); var citys = data[this.options[this.selectedIndex].innerHTML];
console.log(citys);
city_ele.options.length=1; // 请选择城市
for (var i = 0; i < citys.length; i++) {
var ele=document.createElement("option");
ele.innerHTML = citys[i];
city_ele.appendChild(ele);
} } </script>
</body>
</html>

四、表格示例(全选,反选,取消)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button class="select" onclick="SelectAll()">全选</button>
<button class="reserve" onclick="Reverse()">反选</button>
<button class="cancel" onclick="Cancel()">取消</button>
<table border="1">
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
</table> <script> function SelectAll() {
var inputs = document.getElementsByTagName("input");
for (var i=0; i < inputs.length; i ++) {
inputs[i].checked = true;
}
} function Cancel() {
var inputs = document.getElementsByTagName("input");
for (var i=0; i < inputs.length; i ++) {
inputs[i].checked = false;
}
} function Reverse() {
var inputs = document.getElementsByTagName("input");
for (var i=0; i < inputs.length; i ++) {
inputs[i].checked = !inputs[i].checked;
}
} </script> </body>
</html>

实例1

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表格示例</title>
</head>
<body>
<button class="select">全选</button>
<button class="reserve">反选</button>
<button class="cancel">取消</button>
<table border="1">
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>111</td>
<td>222</td>
<td>333</td>
</tr>
</table>
<script>
// 方式一:分别给每个button增加事件
var ele_select = document.getElementsByClassName('select')[0];
var ele_reserve = document.getElementsByClassName('reserve')[0];
var ele_cancel = document.getElementsByClassName('cancel')[0];
var ele_input = document.getElementsByClassName('check');
//全选
ele_select.onclick = function () {
for (var i = 0; i < ele_input.length; i++) {
//添加一个checked属性
ele_input[i].checked = 'checked'
}
};
//取消
ele_cancel.onclick = function () {
for (var i =0;i<ele_input.length;i++){
//删除checked属性,直接设置为空就行了
ele_input[i].checked = ''
}
};
//反选
ele_reserve.onclick = function () {
for (var i = 0; i < ele_input.length; i++) {
var ele = ele_input[i];
if (ele.checked) {//如果选中了就设置checked为空
ele.checked = '';
}
else {//如果没有就设置checked = checked
ele.checked = 'checked';
}
}
}; //方式二:方式一的优化循环增加事件
// var ele_button = document.getElementsByTagName('button');
// var ele_input = document.getElementsByClassName('check');
// for(var i=0;i<ele_button.length;i++) {
// ele_button[i].onclick = function () {
// if (this.innerHTML == '全选') {
// for (var i = 0; i < ele_input.length; i++) {
// //添加一个checked属性
// ele_input[i].checked = 'checked'
// }
// }
// else if (this.innerHTML == '取消') {
// for (var i = 0; i < ele_input.length; i++) {
// //删除checked属性,直接设置为空就行了
// ele_input[i].checked = ''
// }
// }
// else {
// for (var i = 0; i < ele_input.length; i++) {
// var ele = ele_input[i];
// if (ele.checked) {//如果选中了就设置checked为空
// ele.checked = '';
// }
// else {//如果没有就设置checked = checked
// ele.checked = 'checked';
// }
// }
// }
// }
// } </script>
</body>
</html>

实例2

五、模态对话框

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.content{
height: 1800px;
background-color: white;
}
.shade{
position: fixed;
top:0;
left: 0;
right: 0;
bottom: 0;
background-color: gray;
opacity: 0.7;
} .model{
width: 200px;
height: 200px;
background-color: bisque;
position: absolute;
top:50%;
left: 50%;
margin-top: -100px;
margin-left: -100px; }
.hide {
display: none;
}
</style>
</head>
<body> <div class="content">
<button onclick="show()">show</button>
hellohellohellohellohellohellohellohellohellohellohellohello
</div>
<div class="shade hide"></div> <div class="model hide">
<button onclick="cancel()">cancel</button>
</div> <script>
function show() {
var ele_shade = document.getElementsByClassName("shade")[0];
var ele_model=document.getElementsByClassName("model")[0];
ele_shade.classList.remove("hide");
ele_model.classList.remove("hide");
} function cancel() {
var ele_shade = document.getElementsByClassName("shade")[0];
var ele_model= document.getElementsByClassName("model")[0];
ele_shade.classList.add("hide");
ele_model.classList.add("hide"
);
} </script> </body>
</html>

六、搜索框

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模拟placeholder属性的功能</title>
</head>
<body>
<input type="text" placeholder="username" id="submit">
<input type="text" value="username" id="submit1">
<script>
// var ele = document.getElementById('submit1');
var ele = document.getElementById('submit1');
ele.onfocus = function () {
//先获取焦点,点击输入框就获取到焦点,光标一上去就把值设成空
this.value=""
};
ele.onblur = function () {
// 当光标不点击那个输入框的时候就失去焦点了
//当失去焦点的时候,判断当前的那个值是不是为空,是否含有空格
// 如果为空或者有空格,用trim()去掉空格。然后赋值为username
if (this.value.trim()==""){
this.value='username'
}
}
</script>
</body>
</html>

js的作用域

1. 全局作用域(Global Scope)

在代码中任何地方都能访问到的对象拥有全局作用域,一般来说一下几种情形拥有全局作用域:

(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域

var name="yuan";

    function foo(){
var age=23;
function inner(){
console.log(age);
} inner();
} console.log(name); // yuan
//console.log(age); // Uncaught ReferenceError: age is not defined
foo(); // 23
inner();

(2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如:

var name="yuan";

    function foo(){
age=23; var sex="male"
}
foo();
console.log(age); // 23
console.log(sex); // sex is not defined

(3)所有window对象的属性拥有全局作用域

一般情况下,window对象的内置属性都都拥有全局作用域,例如window.alert()、window.location、window.top等等。

2. 局部作用域(Local Scope)

和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域成为函数作用域.

如示例1中的age与inner都只有局部作用域。(js中if、for没有自己的作用域

JavaScript(JS)之Javascript对象DOM(五)的更多相关文章

  1. javascript JS递归遍历对象 使用for(variable in object)或者叫for/in和forEach方式

    1.递归遍历查找特定key值(ie9以下不支持forEach) 原文http://www.cnblogs.com/ae6623/p/5938560.html var obj = { first: &q ...

  2. 使用原生js来操作对象dom的class属性

    之前一直都使用jquery来操作dom,今天想自己用原生写一些插件,却发现给dom增删class的时候,使用slice来截取className特别的麻烦,后来发现,原来原生JS本来就有提供api来对d ...

  3. 前端js之JavaScript

    知识预览 一小知识 二 JavaScript的基础 BOM对象 DOM对象 实例练习 js拓展 小知识 核心(ECMAScript) 文档对象模型(DOM) Document object model ...

  4. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  5. JavaScript学习12 JS中定义对象的几种方式【转】

    avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...

  6. JavaScript进阶 - 第9章 DOM对象,控制HTML元素

    第9章 DOM对象,控制HTML元素 9-1 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属 ...

  7. JAVASCRIPT高程笔记-------第十章 DOM对象

    10.1.1 node类型 --除IE外 所有浏览器都可以访问到这个类型 :JS中所有的节点类型都继承自Node类型 nodeName 与nodeValue  如果是一个元素 那么nodeName中保 ...

  8. JavaScript基础17——js的Date对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. JavaScript基础18——js的Array对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. JavaScript基础16——js的BOM对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. 无法将从VSS中的解决方案添加到TFS的源代码管理器中

    VSS是一种非常有用的项目文件管理工具,百度百科的解释是:VSS 的全称为 Visual Source Safe .作为 Microsoft Visual Studio 的一名成员,它主要任务就是负责 ...

  2. PHP爬虫框架Snoopy的使用

    参考文档: http://ibillxia.github.io/blog/2010/08/10/php-connecting-tool-snoopy-introduction-and-applicat ...

  3. PLSQL过期:Your trial period for PL/SQL Developer is over .If you want to continue using this software ,you must purchase the retail version.

    PLSQL过期:Your trial period for PL/SQL Developer is over .If you want to continue using this software ...

  4. java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=fun2], {ExactMatcher:fDisplayName=fun2(cn.itcast.demo2.fun1)], {LeadingIdentifierMatcher:fClassName=cn.itcast.demo2.fun1,fLeadi

    Junit报的错误, 在测试方法前面没有添加注解@Test

  5. JSON in SQL Server 2016

    JSON functions in SQL Server enable you to analyze and query JSON data, transform JSON to relational ...

  6. Nginx 滑动窗口与缓冲区

    L:125

  7. JS操作Cookies

    JS操作Cookies 获取Cookie function getCookie(c_name) { if (document.cookie.length > 0) { c_start = doc ...

  8. mysql操作命令

    一.MySQL连接命令 mysql-u:指定用户-p:指定密码-S:指定socket文件-P:指定端口-h:指定主机域-e:指定sql语句 mysql> status \s 查看状态 mysql ...

  9. Codeforces1101F Trucks and Cities 【滑动窗口】【区间DP】

    题目分析: 2500的题目为什么我想了这么久... 考虑答案是什么.对于一辆从$s$到$t$的车,它有$k$次加油的机会.可以发现实际上是将$s$到$t$的路径以城市为端点最多划分为最大长度最小的$k ...

  10. Codeforces997C Sky Full of Stars 【FMT】【组合数】

    题目大意: 一个$n*n$的格子,每个格子由你填色,有三种允许填色的方法,问有一行或者一列相同的方案数. 题目分析: 标题的FMT是我吓人用的. 一行或一列的问题不好解决,转成它的反面,没有一行和一列 ...