我目前正在尝试显示两个滚动条,一个位于ListView的顶部,另一个位于底部。但是,我的document.getelementbyid一直返回null,我无法弄清楚原因。如果有帮助,我也在使用母版页。
<script type="text/javascript">
function DoubleScroll(element1) {
var element = document.getElementById(element1);
if (!element) return;
var scrollbar = document.createElement('div');
scrollbar.appendChild(document.createElement('div'));
scrollbar.style.overflow = 'auto';
scrollbar.style.overflowY = 'hidden';
scrollbar.style.width = '500px';
scrollbar.firstChild.style.width = element.scrollWidth + 'px';
scrollbar.firstChild.style.paddingTop = '100px';
scrollbar.firstChild.appendChild(document.createTextNode('\xA0'));
scrollbar.onscroll = function () {
element.scrollLeft = scrollbar.scrollLeft;
};
element.onscroll = function () {
scrollbar.scrollLeft = element.scrollLeft;
};
element.parentNode.insertBefore(scrollbar, element);
}
DoubleScroll(document.getElementById('doublescroll'));
</script>
这是我想要达到的div id:
<div id="doublescroll" style=" width: 100%; height: auto;">
答案 0 :(得分:4)
您正在调用document.getElementById
两次:一次在函数参数中,再次在函数内部。删除其中一个,它应该工作。
答案 1 :(得分:1)
PitaJ有一件事是正确的,你试图使用DOM引用作为id。如果您希望它被重载,您可以随时进行类型检查。
function DoubleScroll(element1) {
var element = typeof element1 === "string" ? document.getElementById(element1) : element1;
另一个问题可能是您在页面上呈现元素之前调用该元素。在元素存在之前,您不能引用该元素。
将行DoubleScroll(document.getElementById('doublescroll'));
移动到正文的底部,将其称为onload,或准备好文档。
答案 2 :(得分:1)
您将获得NULL,因为element1是一个对象。在DoubleScroll函数内部调用document.getElementById时,返回null,因为getElementById无法接受对象作为参数。
以下是如何将元素设置为等于element1:
var element = element1;
您可以在此处找到一个有效的示例:http://jsfiddle.net/mtruty/Bx2JL/1/
所有这一切,设置element = element1是多余的。为什么不直接使用你传入的对象?
希望这有帮助!