js中的全局变量
很多人都觉得在javascript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在window区域加不加var确实是一样,因为都会是全局变量的效果,而如果在函数内部,加var就是局部变量,不加是全局变量。
1.函数
function start(route) {
//创建函数,但是没有执行
function onRequest(request, response) {
//console.log(request.url);
pathname = url.parse(request.url).pathname;
console.log("pathr:" + pathname);
route(pathname);
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello World");
response.end();
}
//创建有名函数,立即执行
(function fnThree() {
console.log("this is a function")
})();
//匿名函数
var fnTwo = function () {
console.log("this is two")
};
//执行匿名函数
fnTwo();
http.createServer(onRequest).listen(80);
console.log("Server has started.");
}
2.with语句
有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象,在 With 语句块中,凡是 JavaScript 不识别的属性和方法都和该语句块指定的对象有关。With 语句的语法格式如下所示:
With Object {
Statements
}
对象指明了当语句组中对象缺省时的参考对象,这里我们用较为熟悉的 Document 对象对 With 语句举例。例如 当使用与 Document 对象有关的 write( )或 writeln( )方法时,往往使用如下形式:
document.writeln(”Hello!“)
如果需要显示大量数据时,就会多次使用同样的 document.writeln()语句,这时就可以像下面的程序那样,把所有以 Document 对象为参考对象的语句放到With 语句块中,从而达到减少语句量的目的。
3.ajax添加header
var setting = {url: "http://apis.baidu.com/apistore/weatherservice/citylist",
data: {"cityname":"上海"},
type: "GET",
dataType: "json",
headers:{"apikey" : "b403fd8ef2efa76bf49be1c600ceb8f2"},
success: function(msg) {
alert(JSON.stringify(msg.retData))
},
error: function(er) {
alert("error")
}
};
$.ajax(setting);
4.实现页面跳转
5.JS冒泡
http://blog.sina.com.cn/s/blog_a322154901015qkk.html
6.jQuery中的.bind()、.live()和.delegate()之间区别分析
http://www.jb51.net/article/27309.htm
jquery 1.4之后不支持live()
7.页面之间参数传递
通过url参数传递
在页面1中书写跳转事件函数:
function goTestHtml(){
strApiTestUrl = "/api_test?" + "url=" + strUrl + "&" +"method=" + strMethod;
location.href = strApiTestUrl
}
在页面2中使用函数
//获取url中的参数获取参数值
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
8.根据时间字符串初始化Date(),求时间差,比较时间大小
var objBegin = new Date($scope.beginTime);
var objEnd = new Date($scope.endTime);if ((objEnd - objBegin) <= 0)
{
swal("开始时间不能大于结束时间!");
return;
}
var iTimeSpan = parseInt((objEnd - objBegin)/1000/60/60); //小时
9.if(!document.getelement) 检测是否支持getElement 不支持肯定也就不支持getElementById
10. 取整数 a = -5669.6 | 0
11.注入标签元素
function fn(){
var btn1 = document.getElementById("btn1");
newBtn = document.createElement("button");
var div = document.getElementById("div");
newBtn.innerHTML = "newBtn"
//div.appendChild(newBtn);
btn1.parentNode.insertBefore(newBtn, btn1); }
12.注入JS
function fn(){
//异步加载的,所以要在On里面处理下
var temp = document.createElement('script');
temp.setAttribute('type', 'text/javascript');
temp.src = "js/inject.js"; //另外一个js
temp.onload = function()
{
// 放在页面不好看,执行完后移除掉
testIn();
//this.parentNode.removeChild(this);
};
document.head.appendChild(temp); }
JS中动态创建元素的三种方法: http://www.jb51.net/article/95200.htm?&_=1527315299176
13.jquery操作对象数组元素的方法
可以用jquery的eq()方法来选择,错误方式:不能用[]方式取jquery对象数组