js代码如下:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = function () {
func(tag,theclass); //这行会报错 tag 未定义
} } else {
window.onload = function() {
oldonload();
func();
}
}
}
addLoadEvent这个函数的作用是给window.onload事件添加多个函数 可是问题在于如果我要执行的函数有多个参数的话怎么办?比如我要传递的函数是类似于这样子的: styleHeaderSiblings(tag, theclass)
在addLoadEvent中改成用func(tag,theclass) 结果会报错 应该怎么写才对?window.onlaod
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = function () {
func(tag,theclass); //这行会报错 tag 未定义
} } else {
window.onload = function() {
oldonload();
func();
}
}
}
addLoadEvent这个函数的作用是给window.onload事件添加多个函数 可是问题在于如果我要执行的函数有多个参数的话怎么办?比如我要传递的函数是类似于这样子的: styleHeaderSiblings(tag, theclass)
在addLoadEvent中改成用func(tag,theclass) 结果会报错 应该怎么写才对?window.onlaod
这样的你可以写成全局变量 tag,theclass
function addLoadEvent(func,param) {
func(param);...
第二种是定义全局变量
var param={};
function addLoadEvent(func) {
func(param);...
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = function () {
func.fn.apply(this , func.args); //这行会报错 tag 未定义
}
} else {
window.onload = function() {
oldonload();
func.fn.apply(this , func.args);
}
}
}
function oneParaFn(name){
alert(name);
}
function twoParaFn(name,age){
alert(name+' '+age);
}
addLoadEvent({
fn : oneParaFn ,/*函数*/
args : ['admin']/*参数*/
});
addLoadEvent({
fn : twoParaFn ,/*函数*/
args : ['john',23]/*参数*/
});
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = function () {
func(param);
} } else {
window.onload = function() {
oldonload();
func();
}
}
}
这样调用: addLoadEvent(styleHeaderSiblings("h1","intro")); 报错 func is not a function 改为 addLoadEvent(styleHeaderSiblings("h1")); 也报同样的错误
参数变成数组或者对象
[//第一个参数,//第二个参数...]
或者
{
h:"h1",
flag:"intro"
}
styleHeaderSiblings函数的代码是这样的
function styleHeaderSiblings(tag,theclass) {
var headers = document.getElementsByTagName(tag);
for (var i = 0; i < headers.length; i++) {
var elem = getNextElement(headers[i].nextSibling);
addClass(elem, theclass);
}
}
应该怎么改?
param.tag = tag;
param.theclass = theclass;
addLoadEvent(styleHeaderSiblings,param);
然后
function styleHeaderSiblings(tag,theclass) {
var headers = document.getElementsByTagName(tag);
for (var i = 0; i < headers.length; i++) {
var elem = getNextElement(headers[i].nextSibling);
addClass(elem, theclass);
}
}
改成
function styleHeaderSiblings(param) {
var headers = document.getElementsByTagName(param.tag);
for (var i = 0; i < headers.length; i++) {
var elem = getNextElement(headers[i].nextSibling);
addClass(elem, param.theclass );
}
}
if(window.addEventListener){
window.addEventListener("load",func,false);
}else if(window.attachEvent){
window.attachEvent("onload",func);
}
}addLoadEvent(function(){
alert(789)
});
代码如下 var param = {};
param.tag = tag;
param.theclass = theclass;
function addLoadEvent(func,param) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = function () {
func(param);
} } else {
window.onload = function () {
oldonload();
func(param);
}
}
}
会报错tag未定义 styleHeaderSiblings这个函数是写在另一个Js文件中的 我是在另一个js文件中调用addLoadEvent(styleHeaderSiblings,param)
如
var tag ="1";
param.tag = tag;
window.onload = function () {
addLoadEvent(styleElementSibling("h1", "intro"));
}
不用addLoadEvent这个方法。