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再执行函数呢。 展开
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再执行函数呢。 展开
3个回答
展开全部
如果你的"ldiv","rdiv"是在页面渲染完毕之后再加入DOM结构的话.....
追问
ok,你对了,我js加载完还没读到div就先执行了。刚才缓存没刷新。
现在问题是,假设我必须得把这段js放这两个div里面执行,有没什么方法先不直接执行,而是先加载dom后再执行呢?谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
window.onload它是触发事件,他会自动执行函数而不用自己去执行,所以不需要加括号,加了括号就自己执行了,所以你带参数的方法在文档还没加载完成就执行了所以找不到结点,你可以在方法内使用alert(document.readyState);来查看加载状态,我这边测试不带参数的是complete,带参数的都是loading或者interacting,如果要传递参数需要这样写
window.onload = function(){
SameH("ldiv","rdiv");
};
你也可以将代码 SameH("ldiv","rdiv");放到最后,这时候根本不需要window.onload事件了,因为文档加载是按顺序加载,放到最后肯定是能查到结点的
如果你需要检测dom是否加载完成需要使用document.onreadystatechange方法,使用方法你可以去百度,如果你用了JQUERY的话就很简单了,都封装好了
window.onload = function(){
SameH("ldiv","rdiv");
};
你也可以将代码 SameH("ldiv","rdiv");放到最后,这时候根本不需要window.onload事件了,因为文档加载是按顺序加载,放到最后肯定是能查到结点的
如果你需要检测dom是否加载完成需要使用document.onreadystatechange方法,使用方法你可以去百度,如果你用了JQUERY的话就很简单了,都封装好了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var a = document.getElementById(i+"");你试下变字符串看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询