javascript函数传参数的问题

functionSameH(i,j){alert(i);//i和j都传进来了啊alert(j);vara=document.getElementById(i);varb=... function SameH(i,j) {
alert(i);//i和j都传进来了啊
alert(j);

var a = document.getElementById(i);
var b = document.getElementById(j);

alert(a);
alert(b);

if (a.scrollHeight < b.scrollHeight) {
a.style.height = b.scrollHeight + "px";
}
else {
b.style.height = a.scrollHeight + "px";
}
}
window.onload = SameH("ldiv","rdiv");

我想用这个函数让左右两个div高度一样高,为什么 window.onload = SameH("ldiv","rdiv"); ,这里我传给 i 和 j
参数都成功了,html 里面也有这个两个 id 的 div ,但 var a 和 var b 为什么取不到元素,why?

为什么直接下面这样写,a 和 b 又能取到值?
(但是这样我一个页面只能比较两个div的高度,能传参数我可以方便的在一个页面比较多个div高度)

function SameH() {

var a = document.getElementById("ldiv");
var b = document.getElementById("rdiv");

if (a.scrollHeight < b.scrollHeight) {
a.style.height = b.scrollHeight+"px";
}
else {
b.style.height = a.scrollHeight+"px";
}
}

window.onload = SameH;

不要复制些jq的方法给我,我想知道上面代码是为什么..
<div id="ldiv" style="float:left;width:50%;height:200px;background:red">L</div>
<div id="rdiv" style="float:right;width:50%;background:blue">R</div>

function SameH(i,j) {
var a = document.getElementById(i);
var b = document.getElementById(j);
some code...
}

addLoadEvent(SameH("ldiv","rdiv"));

现在上面代码没问题了,参数能传了,就是div和js顺序的问题,js要在后面,但如果我js必须在div前面,有没办法检测下,读到dom再执行函数呢。
展开
 我来答
厹中也k
2013-11-11 · TA获得超过1999个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:158万
展开全部
如果你的"ldiv","rdiv"是在页面渲染完毕之后再加入DOM结构的话.....
追问
ok,你对了,我js加载完还没读到div就先执行了。刚才缓存没刷新。

现在问题是,假设我必须得把这段js放这两个div里面执行,有没什么方法先不直接执行,而是先加载dom后再执行呢?谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5443c06
推荐于2016-03-24
知道答主
回答量:2
采纳率:0%
帮助的人:2.5万
展开全部
window.onload它是触发事件,他会自动执行函数而不用自己去执行,所以不需要加括号,加了括号就自己执行了,所以你带参数的方法在文档还没加载完成就执行了所以找不到结点,你可以在方法内使用alert(document.readyState);来查看加载状态,我这边测试不带参数的是complete,带参数的都是loading或者interacting,如果要传递参数需要这样写
window.onload = function(){
SameH("ldiv","rdiv");
};
你也可以将代码 SameH("ldiv","rdiv");放到最后,这时候根本不需要window.onload事件了,因为文档加载是按顺序加载,放到最后肯定是能查到结点的
如果你需要检测dom是否加载完成需要使用document.onreadystatechange方法,使用方法你可以去百度,如果你用了JQUERY的话就很简单了,都封装好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tang19880414
2013-11-11 · TA获得超过368个赞
知道答主
回答量:68
采纳率:0%
帮助的人:31.9万
展开全部
var a = document.getElementById(i+"");你试下变字符串看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式