JS语法基础
js声明
<!--在head标签中使用script标签进行js代码域声明-->
<script type="text/javascript" language="JavaScript"></script>
<!--引入外部声明的js文件-->
<script src="" type="text/javascript" charset="utf-8"></script>
变量
var=12|3.14|"aa"|'bb'|true|new Date()
变量名区分大小写
数据类型
查看数据类型 typeof a
number,string,boolean,object,undefined(undefined类型),null(object类型)
变量转换
Number(a),转换为数值类型,失败返回NaN(number类型)
Boolean(a),转布尔,非零值返回true,0值,null,未定义,空字符串返回false
算术运算符
除了+号,碰到字符串,进行字符串连接
其他运算符都会先将运算对象转换成数值类型在进行计算
比较运算符中有数字时,也会先将其他类型转成数值类型
===必须类型一致,值一致
null == undefined,但是不全等
数组
声明方式
var arr1 = new Array(); //声明空数组
arr1[0] = "abc";
var arr2 = new Array(5); //声明指定长度的数组
alert(arr2.length);
var arr3 = [1, 2, 3];
var arr4 = new Array([5, 6]); //直接给初始值
var arr5 = []; //空数组
arr5[0] = 0;
arr5[10] = 10;
alert(arr5.length); //11
// 数组长度看最大的下标,下标只能是数字,下标不存在的值是undefined
//遍历
for(;;)
for(var i in arr)
练习
function test(btn){
// var num = document.getElementById("aaa").value;
var num = btn.value;
switch(num) {
case "=":
document.getElementById("inp").value = eval(document.getElementById("inp").value);
break;
case "c":
document.getElementById("inp").value = "";
break;
default:
document.getElementById("inp").value += btn.value;
break;
}
}
<input type="text" id="inp" value="" />
<input type="button" id="aaa" value="1" onclick="test(this)" />
数组常用操作
合并:str.concat(b, c);
数组转字符串:str.join(“-”); //参数是分隔符
尾部出栈:str.pop();
尾部入栈:str.push("hello");
反转:str.reverse();
头部出栈:str.shift();
头部入栈:str.unshift("aa");
排序:sort();
删除并可选插入:splice();
JS函数
//js里函数是对象
function foo(a1, a2) {alert("函数声明1")};
var test = new Function("a1", "a2", "alert('函数声明2')");//最后一个是函数体
var bar = function(a1, a2) {};
类
function Person(name, age) {//声明和构造二合一了
this.name = name;
this.age = age;
this.test = function(a) {
alert(a);
}
}
var p1 = new Person("张三", 20);
alert(p1.name);
p1.address = "北京市";
alert(p1.address); //类对象里的内容,可以动态加
//使用prototype
Person.prototype.test = function(){alert("哈哈");}; //类对象公有的,优先找本对象自己的
function User(uname, pwd) {
this.uname = uname;
this.pwd = pwd;
}
User.prototype.goo = function(){alert("goo")};
Person.prototype.user = new User();
p1.user.goo(); //变相实现继承的功能
Person.prototype = new User();
p1.goo();
对象
//临时创建一个对象,来自定义属性存储数据,一般用来存数据
var obj = new Object();
obj.name = "张三";
obj.age = "25";
常用方法和对象
String对象
toUpperCase
toLowerCase
substr //指定开始位置和长度
strstring //指定开始位置和结束位置
indexOf //指定字符第一次出现的位置
LastIndexOf //最后一次
Date对象
var d =new Date();
d.getYear();
Math对象
random //[0, 1)
floor //向下取整
Gloabal对象
eval //检查js代码并执行
isNaN //
parseInt //
JS事件
onclick //单击
ondbclick //双击
onmouseover //鼠标进入
onmousemove //鼠标移动
onmouseout //鼠标移出
onkeydown //键盘按下
onkeyup //键盘弹起
onfocus //获取焦点
onblur //失去焦点
onload //页面加载,页面加载成功之后,主要用来初始化页面数据,body
onchange //值改变事件,select
事件冲突
例如单双击事件之间
事件阻断
事件的函数如果返回的是false,那么标签本身的功能,如超链接,form表单提交的动作会被阻断
超链接执行js函数
<a href="javascript:testfunc()">调动js函数</a>
window对象
BOM浏览器对象模型的具体实现,JS调用浏览器本身的功能
window对象不用new,直接进行使用即可。window关键字可以省略不写
框体方法
window.alert("我是警告框"); //警告框,无返回值
window.confirm("确定要删除么?"); //确认框,返回boolean
var name = window.prompt("请输入昵称:"); //提示框,返回输入的字符串或null
定时器和间隔器
var id1 = setTimeout(func, 3000);//定时执行,指定时间后执行指定函数,参数1函数对象,参数2时间毫秒
var id2 = setInterval(func, 2000); //间隔执行,间隔固定时间执行
cleanTimeout(id1); //停止执行的定时器
cleanInterval(id2); //停止指定的间隔器
子页面
//从父页面,打开子页面
open('页面.html','newwindow', 'width=600, height, left=100px, top, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no')
window.setInternal(function(){
var span = document.getElementById("timeSpan");
span.innerHTML = span.innerHTML - 1;
// 关闭子页面
if (span.innerHTML == 0) {
window.close(); //只能关闭window.open打开的页面
}
}, 1000);
window.openser.testfunc();//子页面调用父页面的方法。可以在父页面搞提示语,可以重新加载父页面的资源
<b> 欢迎访问,页面将在<span id="timeSpan" style="color:red; font-size:30px">5</span>后关闭</b>
window对象常用属性
//地址栏属性
window.location.href="http://www.baidu.com"; //跳转
window.location.reload(); //刷新
//历史记录属性
window.history.forward(); //前进
window.history.back(); //后退
window.history.go; //跳转到指定历史记录页面,0是当前页面
//屏幕属性
window.screen.width; //分辨率
window.screen.height;
//浏览器配置属性
window.navigator.userAgent; //浏览器版本信息
//主体面板属性(document)
document对象
浏览器对外提供的一个对象,支持js操作HTML文档,此对象封存了HTML文档的所有信息。
document获取元素对象
- 直接获取
var a = window.document.getElementById("uname");//id
var fav = window.document.getElementsByName("fav");//name,返回数组
var input = window.document.getElementsByTagName("input");//标签名,返回数组
var xx = window.document.getElementsByClassName("common");//class
- 间接获取
//父子关系
var showdiv = document.getElementById("showdiv"); //获取父级元素对象
var childs = showdiv.childNodes; //获取所有的子元素对象数组
//子父关系
var inp = document.getElementById("inp"); //获取子元素对象
var div = showdiv.parentNode; //获取父元素
//兄弟关系
var inp = document.getElementById("inp"); //获取元素对象
var preEle = inp.previosSibling; //上一个元素
var nextEle = inp.nextSibling; //下一个元素
document操作元素属性
var inp = document.getElementById("unmme");
alert(inp.type + ":" + inp.name + ":" + inp.id + ":" + inp.value); //获取固有属性
inp.value = "jealous"; //修改固有属性
inp.getAttribute("customized_attribute");
inp.setAttribute("customized_attribute", "classic");
document操作元素内容和样式
alert(div.innerHTML); //获取元素对象div的所有内容,包括HTML标签
div.innerTEXT; //获取元素对象div的文本内容,不包括HTML标签
showdiv.style.backgroundColor="#FFA500"; //修改元素style属性中的样式
document操作元素的文档结构
showdiv.innerHTML = showdiv.innerHTML + "<div><input type='file' value=''/><input type='button' value='删除' onclick='delInp(this)'/></div>"; //div增加内容
function delInp(btn) {
var showdiv = getElementById("showdiv");
var cdiv = btn.parentNode; //input元素对象的父节点
showdiv.removeChild(cdiv); //父div删除子div
}
var showdiv = document.getElementById("showdiv");
var inp = document.createElement("input");
inp.type = "file";
var btn = document.createElement("input");
btn.tyle = "button";
btn.value = "删除";
btn.onclick = function(){
showdiv.removeChild(inp);
showdiv.removeChild(btn);
showdiv.removeChild(br);
}
var br = document.createElement("br");
//将创建的元素放到div里面
showdiv.appendChild(inp);
showdiv.appendChild(btn);
showdiv.appendChild(br);
JS操作form表单
//获取form表单对象
var fm = document.getElementById("fm");
//直接通过name属性值
var frm = document.frm;
//获取form表单元素对象集合
fm.elements.length
//form表单常用方法
fm.submit();
fm.reset();
//表单属性操作
fm.action = "http://www.baidu.com/s";
fm.method = "GET";
//表单元素通用属性
readonly="readonly"; //数据不可更改,但是可以提交
disabled="disabled"; //不能进行任何操作,数据不会提交
操作表格
//删除行
function delRow(btn) {
var ta =document.getElementById("ta"); //获取表格对象
vat tr = btn.parentNode.parentNode; //获取要删除的行对象
ta.deleteRow(tr.rowIndex);
}
//修改行内容
function updateRow(){
var cell = document.getElementById("cell");
cell.innerHTML="<input type='text' value='" + cell.innerHTML + "' onblur='updateRow2(this)'/>"; //修改单元格内容
}
function updateRow2(inp) {
var cell = document.getElementById("cell");
cell.innerHTML = inp.value; //失去焦点时保存数值
}
// 添加行
function addRow() {
var ta = document.getElementById("ta"); //获取表格对象
var tr = ta.insertRow(1);
var cell0 = tr.insertCell(0);
cell0.innerHTML = "<input type='checkbox' name = 'chk'/>";
var cell1 = tr.insertCell(1);
cell1.innerHTML = getElementById("uname").value;
...
}
// 复制行
function copyRow() {
tr.innerHTML = ta.row[i].innerHTML;
}
JS语法基础的更多相关文章
- js语法基础入门(1)
1.基础入门 1.1.hello world 1.1.1.JavaScript是什么? JavaScript是一门跨平台.面向对象的轻量级脚本语言,在web开发中被广泛应用 1.1.2.JavaScr ...
- JS语法基础-基本使用及数据类型分类
JS基础 --------------- 什么是JS? ------------------ JS的全称是Javascript. ----------------------------- 老婆和老婆 ...
- js语法基础入门(7)
7.数组 7.1.什么是数组以及相关概念? 什么是数组?是一组数据有序排列的集合.将一组数据按一定顺序组织为一个组合,并对这个组合命名,这样便构成了数组. 什么是数组元素?组成数组的每一个数据称为数组 ...
- js语法基础入门(6)
6.函数 6.1.函数是什么? 函数就是具有名称和一定功能点代码块,这段代码块被封装起来,由一组语句组成,它们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用.一般来说,所谓编程 ...
- js语法基础入门(1.2)
1.4.查找元素的方法 1.4.1.查找元素的方法 JavaScript可以去操作html元素,要实现对html元素的操作,首选应该找到这个元素,有点类似于css中的选择器 html代码: <d ...
- js语法基础入门(5.2)
5.2.循环结构 当一段代码被重复调用多次的时候,可以用循环结构来实现,就像第一个实例中出现的场景一样,需要重复询问对方是否有空,这样就可以使用循环结构来搞定 5.2.1.for循环语句 //语法结构 ...
- js语法基础入门(5.1)
5.流程控制 5.1.选择结构 程序流程图 图例: 椭圆: 开始/结束 矩形: 操作 菱形: 判断 连接线: 走向 可以根据程序流程图,理清楚程序执行的流程 5.2.1.if语句 //if语句语法结构 ...
- js语法基础入门(4)
4.运算符 4.1.什么是运算符? 运算符就是用来表示具体运算规则的符号,例如数学计算中的加减乘除就是具体的运算规则,我们分别用"+ - * /"等符号来表示 4.2.运算符的分类 ...
- js语法基础入门(3)
3.数据类型 3.1.数据类型学习重点 前面我们通俗的讲了,数据类型其实就是对数据进行了分类,那么,在js中到底把数据分成了几类?这些类的名称叫什么?每个分类下面有那些值?这些问题是需要记清楚的,例如 ...
随机推荐
- FCC JS基础算法题(5):Return Largest Numbers in Arrays(找出多个数组中的最大数)
题目描述: 找出多个数组中的最大数右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组.提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组 ...
- python学习第五次笔记
python学习第五次笔记 列表的缺点 1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2.列表只能按照顺序存储,数据与数据之间关联性不强 数据类型划分 数据类型:可变数据 ...
- 不使用Visual Studio开发ASP.NET MVC应用(上篇)
入行十多年,工作闲暇,还是对信息技术比较关注,经常测试一些新的技术,感受一下科技发展给大家带来的便利.Visual Studio接触也有年头了,对它总感觉乎近乎远的,既熟悉又陌生,一直没有像用别的工具 ...
- redis命令Set类型(七)
集合类型 集合类型:无序.不可重复 列表类型:有序.可重复 命令: 1>增加/删除元素 语法:SADD key member [member -] 127.0.0.1:6379> sadd ...
- latex如何定义宏,插图统一尺寸减少工作量
问题背景是这样的,因为我要在文中插入一系列的图片,但是这些图片的大小我要保持一致,来达到预期的效果. 比如我有三个figure,这三个figure中,每个figure里面有两行,5列图片,我想要的是, ...
- linux nginx 如何配置多个端口
在linux下发布.netcore 应用,并使用nginx进行反向代理,参照博客园文章 https://www.cnblogs.com/ants/p/5732337.html#autoid-7-3-0 ...
- AI之旅(3):升维与最小二乘法
前置知识 矩阵的逆 知识地图 首先我们将了解一种叫升维的方法,用已有特征构造更多的特征.接着通过对空间与投影建立一定的概念后,推导出最小二乘法. 当特征数量不足时 在上一篇<初识线性 ...
- ubuntu下使用opencv问题以及解决方案
CMakeFiles/hw5_1_node.dir/computeORB.o: In function `cv::String::~String()':/usr/local/include/openc ...
- loadrunner---Android、iOS压力测试
链接来源:http://www.cnblogs.com/ydnice/p/5790848.html 一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试 ...
- .net core+Spring Cloud学习之路 二
前言: 原本计划这次写一下搭建eureka群集.但是发现上次写的只是服务的注册,忘了写服务的发现,所以这次先把服务发现补上去. 我们基于上篇文章,再新建两个.net core web api项目,分别 ...