在搜索div id时,Document.getelementbyId返回null

时间:2014-07-28 17:35:39

标签: javascript html asp.net listview

我目前正在尝试显示两个滚动条,一个位于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;">

3 个答案:

答案 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是多余的。为什么不直接使用你传入的对象?

希望这有帮助!