JavaScript紧凑学习

windows本地,调用命令行:

win键+R 键入cmd , (cmd是Command 命令行 简称)

目录是C盘下的

C:\Users\Administrator>

创建文件夹:

[前面省略上面的目录结构]mkdir jsFastLearn

cd进去,创建文件,testjs1.js

cd jsFastLearn
echo .>testjs1.js

好,看一下文件夹jsFastLearn里面有这个文件了.默认内容是echo后面的 .

之后我们开始编辑.用什么工具呢?webStorm在这弄js的话显得有点臃肿,推荐sublime2中文版.而vim也是很好的,把下载好的gvim,vim放入系统环境变量,之后使用Windows PowerShell直接输入vim或者gvim试试,是不是OK啦?

现在又觉得IntelliJ IDEA做JavaScript不错.界面也好看.补全也迅速.

2018年1月21日 12:39:56


第一章 在IDEA中编写js


Idea是JetBrains公司的产物,该公司总部位于美丽捷克首都布拉格.

一个字: 美美美......

他们公司内部是这样的:

百度百科说这家公司大多数是以严谨著称的东欧程序员为主.

看到这里我不禁要想: 布拉格这么美丽的地方才会出现这么美丽的编辑器吧...说实话我用过的IDE精通的不敢说,但都看过了,而且界面上我也是喜欢去调整到自己喜欢的样子,但没有一个像IDEA给我的视觉享受要大.而且IDEA每天打开都会有一个tips,提示一下快捷键的用法...比较不错~

上面是intellij Idea的图标和捷克的国旗...色调方面还是很爱国的.

我忽然想,什么时候我们国家可以有这样一个用经典来形容的ide呢...

跑题了,言归正传.在风景美如画的布拉格,开发人员研发了idea,而idea不仅只适合java编程,它的自动补全和UI的美观让很多人爱不释手,从而也可以使用它制作HTML,JavaScript. 上面是昨天夜里做的一些demo, 参照着w3c上面的教程和电子书<JavaScript高级程序设计>.总体第一次打JavaScript的时候感觉跟java刚开始学基础语法和流程语句时差不多.

很有意思的是document.getElementById("someId")这个语法结构,,,简单形象,充满乐趣,可以更改元素显示的字,css样式...或是某图片的链接.切换两张不同的图片...等等功能,让我很想有种想做动画片的冲动.(今天中午看新闻说YouTube上充斥着一些邪恶的动画片,比如唐老鸭横尸街头,冰雪公主被迫开颅手术.等,,,而新闻报道说这些邪恶动画及真人视频居然被搬运到了某国内视频网站.而更匪夷所思的是,中国人居然效仿去拍摄同类的真人视频小片段...)

啊.了解js之美吧.不过可以明显地感受到一个美一个丑的对比(布拉格的美丽idea与美国的邪教动画片)

做完了基本的js数组操作,感觉意犹未尽啊!下一步是Date对象的学习.再加上基础数据类型的学习.

在<JavaScript高级程序开发>这书中,提到了一些基础数据类型,大概看了下.现在要应用在学习编码上.

2018年1月22日 16:30:36

明天早班,今晚弄Date对象就睡觉.2018年1月23日 00:25:50

了解了Date对象,感觉做一些时钟什么的很easy!改天要做. 

时钟靠后,先学js的正则表达式,2018年1月23日 12:22:29

因为js中的正则可以用在form表单的验证,从而减轻Servlet(服务器端)的验证压力.

这里着重地记录一下js正则表达式的学习.



第二章 javascript正则表达式对象


RegExp 是 正则表达式( regular expression )的简写.

RegExp对象用于规定在文本中检索的内容.

正则表达式是描述字符模式的对象.

正则表达式用于对字符串模式匹配及检索替换. 是对字符串执行模式匹配的强大工具.

正则表达式可以用来检索单个多个的字符,用于解析,格式检查,替换等等.

(其实知道java中的正则表达式,在js中概念就相当于理解了.)

语法:

var patt=new RegExp(pattern,modifiers);        
or more simply:
var patt=/pattern/modifiers;

上面第二种方法比较简单和常用.

当使用构造函数创造正则对象时, 需要常规的字符转移规则 ( 在前面加反斜杠\ ). 比如,以下是等价的:

var re = new RegExp("\\w+");
var re = /\w+/;

RegExp修饰符

修饰符用于执行是否全局检索,是否区分大小写等.

i 修饰符是用来执行不区分大小写的匹配.

g 修饰符是用来执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配).

下面是简单的正则匹配案例:

要判定的数组或字符串:<p id="str"></p>
判断的正则返回:<p id="reg1"></p>
判断成功为true否则为false:<p id="regboolean"></p>

判断的正则处于被判定数组或字符串的开始下标:<p id="reg2"></p>
(在html中空格只显示一个,如果在数据中有多个空格,判断的下标要加上多的空格,但显示上则还是一个空格.)
<script>
var tempStr = "This is a banana.";
document.getElementById("str").innerHTML=tempStr;
var pattern = /banana/i;
//测试下Boolean类型返回
var pattBoolean = tempStr.match(pattern);
if (pattBoolean != null)
{
document.getElementById("regboolean").innerHTML=true;
}
else
{
document.getElementById("regboolean").innerHTML=false;
}
//返回匹配的正则,无匹配项返回null
document.getElementById("reg1").innerHTML=tempStr.match(pattern);
//返回匹配的正则的开始下标.
document.getElementById("reg2").innerHTML=tempStr.match(pattern).index;
</script>

先到这里,看完几篇博客再继续修炼!

2018年1月23日 14:12:46

除了match()方法, 对字符串处理还有 search()replace() 方法.


  • search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子字符串的起始下标位置.
  • replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子字符串.

之前一直使用document.getElementById("someid").innerHTML = someth; 是将某个id为someid的标签内容更改或填入 someth (字符串或数字等).

而要想使用js取得某id标签内的内容(尤其指字符串)是这样的:

<p id="demo">您好啊!JavaScript!</p>
<script>
function myFunction() {
//这里的str就获取了"您好啊!JavaScript!".
var str = document.getElementById("demo").innerHTML;
</script>

可以利用这样的能传入能获取的innerHTML做很多事情!~~~开动脑筋...

今天在注册登录demo中加入了简单的js验证:

function checkLog()
{
var user_name = formLog.usernameLogin.value;  //formLog是表单name
var pass_word = formLog.passwordLogin.value; //.value获取id字段某的值
if(user_name==""||user_name==null){
alert("请输入用户名!~~");
formLog.usernameLogin.focus();
return false;
}
else if(pass_word==""||pass_word==null){
alert("请输入密码!~~")
formLog.passwordLogin.focus();
return false;
}

else{
return true; //这里return true是我自己加的.还有其他的方式,力气完美.
formLog.submit();
}

}

上面是登录验证,注册验证也弄得如此简单.

2018年1月25日 16:44:13

先休息一下了...晚上看看买的js那本书.(好贵啊 将近50,一定要多看几遍)

@(我的第一个笔记本)[JavaScript Ajax js, JavaScript Ajax jQuery js]为了更有效地学习正则表达式,用IDEA再次制作一个注册登录的demo是不可少的.IDEA的自动补全完全>Eclipse中的这个功能. 当然不使用自动补全也可以学习到一些东西.

在用户注册与登录验证的部分,要找准要点,切中要害,找到最正经最好的教程.

将这些结合起来,形成自己的一个体系.继而总结出来+分析+分享.

2018年1月26日 10:27:25

今天下午把RegisterAndLoginWithDB的判定js重新做了. 名为reg1.js (数据缺乏正则表达式判断和长度判断)

/**
* 强化的reg.js 加入更多判定和细节 相应form表单也做调整(原表单) ctrl+m eclipse编辑区全屏
*/
// userName关注焦点时方法
function focus_username() {
var resultObj = document.getElementById("result_userName");
resultObj.innerHTML = "请输入您的用户名";
resultObj.style.color = "blue";
}
// userName取消焦点时方法
function blur_username() {
var resultObj = document.getElementById("result_userName");
uname = document.formReg.userName.value;
if (uname == "" || uname == null) {
resultObj.innerHTML = "用户名不能为空";
resultObj.style.color = "red";
return false;
} else {
resultObj.innerHTML = "验证成功";
resultObj.style.color="green";
return true;
}
}

/*
* 下面是passWord
*/
// passWord关注焦点时方法
function focus_password() {
// 获取表单提示元素 result_passWord
var resultObj = document.getElementById("result_passWord");
resultObj.innerHTML = "请输入您的密码~";
resultObj.style.color = "blue"; // 设置元素颜色
}
// passWord取消焦点时方法
function blur_password() {
// 获取元素,获取密码验证,按需提示.
var resultObj = document.getElementById("result_passWord");
// 获取密码判断
pwd = document.formReg.passWord.value;
if (pwd == "" || pwd == null) {
resultObj.innerHTML = "密码不能为空";
resultObj.style.color = "red";
return false;
} else {
resultObj.innerHTML="验证成功";
resultObj.style.color="green";
return true;
}
}
/*
* 下面是passWord2
*/
function focus_password2(){
//获取第一次输入的密码和这次的密码,判断相等与否,不相等false,相等为true
var resultObj=document.getElementById("result_passWord2");
resultObj.innerHTML="请重复输入密码";
resultObj.style.color="blue";

}
function blur_password2(){
//获取第一次输入的密码和这次的密码,判断相等与否,不相等false,相等为true
var resultObj=document.getElementById("result_passWord2");

pwd2=document.formReg.passWord2.value;
pwd=document.formReg.passWord.value;

if (pwd2 == pwd) {
resultObj.innerHTML = "验证成功";
resultObj.style.color = "green";
return true;
} else {
resultObj.innerHTML = "请正确重复密码";
resultObj.style.color = "red";
return false;
}

}

//进行总体验证后 , 方可submit成功.
function checkReg() {
flag_username = blur_username();
flag_password = blur_password();
flag_password2 = blur_password2();
if (flag_username == true && flag_password == true
&& flag_password2 == true) {
return true;
} else {
return false;
}
}

上面的密码重复没有判定空.待修复

原表单也做了相应修改:

<form action="/RegisterAndLoginWithDB/Register" method="POST"
name="formReg" onsubmit="return checkReg()">
<p>用户名</p>
<input type="text" name="userName" onfocus="focus_username()"
onblur="blur_username()"><br />
<div id="result_userName"></div>
<br />
<p>密码</p>
<input type="password" name="passWord" onfocus="focus_password()"
onblur="blur_password()"><br />
<div id="result_passWord"></div>
<br />
<p>确认密码</p>
<input type="password" name="passWord2" onfocus="focus_password2()"
onblur="blur_password2()"><br />
<div id="result_passWord2"></div>
<br />
<br /> <br />
<button type="submit" class="btn btn-primary btn-lg">注册</button>
<button type="reset" class="btn btn-info btn-lg">重置</button>
</form>
接下来的是继而在js中添加判定数据格式,长度.

经常用到的IDEA快捷键

copy one line to the next line : CTRL+D

delete one line : CTRL+X

Java main method : psvm + enter

System.out.println() : sout + enter

move one line to other line : CTRL+SHIFT+UP/DOWN ARROW

go to the next line : SHIFT+ENTER

to replace all the selected string : CTRL+SHIFT+R

快捷键博客(反正也不看 _ 毛病是惯的):​

Today i feel sooo tired. Wish tomorrow i hava a good rest and spirit. ^-^/

2018年1月27日 22:05:46

@(合抱之木,生于豪末;九层之台,起于垒土;千里之行,始于足下.)


JavaScript 注释

不是所有的 JavaScript 语句都是"命令"。双斜杠 // 后的内容将会被浏览器忽略:

// 我不会执行

JavaScript 数据类型

JavaScript 有多种数据类型:数字,字符串,数组,对象等等:

var length = 16; // Number 通过数字字面量赋值

var points = x * 10; // Number 通过表达式字面量赋值

var lastName = "Johnson"; // String 通过字符串字面量赋值

var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值 var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值

JavaScript 函数

JavaScript 语句可以写在函数内,函数可以重复引用:

引用一个函数 = 调用函数(执行函数内的语句)。

function myFunction(a, b) {

return a * b; // 返回 a 乘于 b 的结果 }

JavaScript 对大小写敏感。

JavaScript 对大小写是敏感的。

当编写 JavaScript 语句时,请留意是否关闭大小写切换键。

函数 getElementByIdgetElementbyID 是不同的。

同样,变量 myVariableMyVariable 也是不同的。

将小数转为整型,或者保留指定位数小数

var amount = 123.2314
amount.toFixed(); //123
var amount2 =144.13333
var n = amount2.toFixed(2); //144.13
console.log(typeof n); //string