js笔记
1.getElementsByClassName兼容IE9以下浏览器
function getElementsByClassName(node,classname){
if(node.getElementsByClassName){
// 使用现有方法
return node.getElementsByClassName(classname);
}
else{
var results = new Array();
var elems = node.getElementsByTagName("*");
for(var i=0; i<elems.length; i++){
if(elems[i].className.indexOf(classname) != -1){
results[results.length] = elems[i];
}
}
return results;
}
}
2.假如我们希望网页加载完毕后执行多个函数,可能会这样写
window.onload = function(){
firstFunction();
secondFunction();
}
但是这种方法存在一些局限,例如:如果一个页面中存在多个javascript文件,在这多个javascript文件中可能每一个javascript文件都会用到window.onload方法,在这种情况下使用这种方法是无法解决的,我们知道假如将多个函数逐一绑定到onload事件上,比如:
window.onload = firstFunction;
window.onload = secondFunction;
它们当中只有最后那个才会被实际执行。所以更好的方法是:
function addLoadEvent(func){
var oldonload = window.onload;
if(typeof window.onload != "function"){
window.onload = func;
}
else{
window.onload = function(){
oldonload();
func();
}
}
}
这将把那些在页面加载完毕时执行的函数创建为一个队列,今后在增加需要在页面加载完毕时执行的函数,只需要多写一条语句:
addLoadEvent(myFunction);
3.insertBefore方法,将newElement插入到targetElement之前:
parentElement.insertBefore(newElement,targetElement);
DOM没有提供insertAfter方法,于是我们根据已有的方法自己编写一个:
function insertAfter(newElement,targetElement){
var parent = targetElement.parentNode;
if(parent.lastChild == targetElement){
parent.appendChild(newElement);
}
else{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
4.Ajax技术的核心就是XMLHttpRequest对象。js通过这个对象发送请求、处理响应
// 兼容写法
function getHTTPObject(){
if(typeof XMLHttpRequest == "undefined"){
XMLHttpRequest = function(){
try {
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
} catch (e) {}
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch (e) {}
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {}
return false;
}
}
return new XMLHttpRequest();
}
var request = getHTTPObject();
function getNewContent(){
var request = getHTTPObject();
if(request){
// 请求目标
request.open("GET","example.txt",true);
// 如何处理响应
request.onreadystatechange = function(){
if(request.readyState == 4){
var para = document.createElement("p");
var txt = document.createTextNode(request.responseText);
para.appendChild(txt);
document.getElementById("new").appendChild(para);
}
};
// 发送请求
request.send(null);
}
else{
alert("Sorry,your browser doesn't support XMLHttpRequest");
}
}
addLoadEvent(getNewContent);
5.addClass方法
function addClass(element,value){
if(!element.className){
element.className = value;
}
else{
var newClassName = element.className;
newClassName += " ";
newClassName += value;
element.className = newClassName;
}
}
啊,用习惯了jQuery以后总觉得原生js好麻烦啊::>_<::