【问题标题】:How do I invoke this function with JavaScript?如何使用 JavaScript 调用此函数?
【发布时间】:2011-12-12 17:07:54
【问题描述】:

我只是在使用基本级别的 javascripts。今天,当新数据添加到 DIV 时,我发现了以下内容并向下滚动 DIV 层。我不明白如何调用函数。是否要使用window.onload 函数?或任何其他。我应该在哪里声明 DIV 名称?

代码如下。

var chatscroll = new Object();
chatscroll.Pane = 
    function(scrollContainerId)
    {
        this.bottomThreshold = 25;
        this.scrollContainerId = scrollContainerId;
    }

chatscroll.Pane.prototype.activeScroll = 
    function()
    {
        var scrollDiv = document.getElementById(this.scrollContainerId);
        var currentHeight = 0;

        if (scrollDiv.scrollHeight > 0)
            currentHeight = scrollDiv.scrollHeight;
        else 
            if (objDiv.offsetHeight > 0)
                currentHeight = scrollDiv.offsetHeight;

        if (currentHeight - scrollDiv.scrollTop - ((scrollDiv.style.pixelHeight) ? scrollDiv.style.pixelHeight : scrollDiv.offsetHeight) < this.bottomThreshold)
            scrollDiv.scrollTop = currentHeight;

        scrollDiv = null;
    }

更新 1:

<script type="text/javascript">
    var chatscroll = new Object();
    var chatScrollPane = new chatscroll.Pane('div1');
    chatScrollPane.activeScroll()
    chatscroll.Pane = function (scrollContainerId) {
    this.bottomThreshold = 25;
    this.scrollContainerId = scrollContainerId;
}
    chatscroll.Pane.prototype.activeScroll = function () {
    var scrollDiv = document.getElementById(this.scrollContainerId);
    var currentHeight = 0;

    if (scrollDiv.scrollHeight > 0)
        currentHeight = scrollDiv.scrollHeight;
    else
        if (objDiv.offsetHeight > 0)
            currentHeight = scrollDiv.offsetHeight;

    if (currentHeight - scrollDiv.scrollTop - ((scrollDiv.style.pixelHeight) ? scrollDiv.style.pixelHeight : scrollDiv.offsetHeight) < this.bottomThreshold)
        scrollDiv.scrollTop = currentHeight;
    scrollDiv = null;
}
</script>

【问题讨论】:

  • 我认为您需要 Jquery 才能实现上述功能。
  • @CharmingPrince 如果您发布了关于斑马的帖子,那么准确度再低。不管你信不信,这里不涉及 jQuery。 :P
  • @Chris 从评论中可以清楚地看到,我说“我认为”?其中不确定。既然错了,就这样吧,我不是 JavaScript 专家。
  • 那为什么还要评论呢?我不怪你不知道——有很多事情我不知道。我的问题是你告诉某人一些明显错误的事情,来自对手头主题的无知。比传播不准确的信息更好地观察和学习。
  • @Chris 这就是为什么它被称为评论,我没有给出答案,如果我在答案字段中写了这个,那么你可以说任何你想要的。很高兴知道你不知道一切,因为有没有这样的人,如果有人发表了错误的评论,你不必大喊大叫,就像@SLaks - 只是说“错误” - 保持简单我会理解我的错误并从中学习而不是方式你正在接受它。所以冷静一下。

标签: javascript html function declaration invocation


【解决方案1】:

chatscroll.Pane 旨在用作构造函数。你会像这样构造一个实例:

new chatscroll.Pane('somescrollContainerId');

如果将返回值分配给变量,则返回的值将变为可重用。

var chatScrollPane = new chatscroll.Pane('somescrollContainerId');

您传入的scrollContainerId 将是您要使用此对象的HTML 文档中DIV 元素的ID(id 属性)。

您不需要在window.onload 中声明它,但这肯定不会有什么坏处。构造函数所做的只是创建一个新对象,将this 值设置为该新对象,在其中创建和设置bottomThresholdscrollContainerId 属性,然后在构造函数完成时返回这个新对象。

请确保在文档完全解析之前永远不会调用 activeScroll 函数,因为它实际上会进入您的文档以检索和操作元素。

【讨论】:

  • 那是声明一个变量赋值给它初始化它)引用 一个实例。对于 JS/ES 初学者来说,最重要的事情之一是学习正确的术语,这样他们就可以理解技术文章,并且不会成为不知道他们在说什么的人的受害者(无意冒犯)。
  • 是在页面加载时自动调用还是必须手动调用?如果有,怎么称呼?
  • @KarsM - 它不会自动调用。你必须自己调用它。
  • @PointedEars - 没有冒犯。我编辑得更明确一点。
  • @AdamRackis 也许应该使用“方法”(OOP)而不是“函数”。而“提升”是另一个误解 :) JavaScript: The World's Most Misunderstood Programming Language
猜你喜欢
  • 2014-02-16
  • 1970-01-01
  • 2016-07-03
  • 2017-12-18
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
相关资源
最近更新 更多