繁体   English   中英

我收到“Object Required”错误消息

[英]I am getting “Object Required” error message

我想在我们网站的主页上贴一个新闻滚动条。

我对我得到的错误消息感到有点困惑,因为我在一台PC上得到它而在另一台PC上得不到它:

所需对象

我正在使用下面的代码,但是当我在default.aspx page上将此文件用作Web用户控件时,以下行不断抛出Object Required错误:

el2.style.height='<%=box_height %>';

结果,新闻不滚动。

任何帮助非常感谢。

<a href="#"><uc1:NewsScroller ID="NewsScroller1" runat="server" /></a>

<script language="VB" runat="server">
    Public box_TextColor As String = "black"
    Public box_height As Integer = 150
    Public box_width As Integer = 166
    Public box_padding As String = "0 0 0 20"    
</script>

<script type="text/javascript" for="window" event="onload">
// <!CDATA[
    return window_onload()
// ]]>
</script>

<script type="text/javascript">
// <!CDATA[

// <!--
    var speed = 2;
    function init(){
        var el = document.getElementById("newsdiv");
        el.style.overflow = 'hidden';
        el.style.height='<%=box_height %>';
        el.style.width='<%=box_width %>';
        el.style.padding='<%=box_padding %>';
        el.style.color='<%=box_TextColor %>';

        var el2 = document.getElementById("newsdiv-p1");
        el2.style.height='<%=box_height %>';
        var el3 = document.getElementById("newsdiv-p2");

        el3.style.height='<%=box_height %>';  
        //alert(document.getElementById("newsdiv-p2").style.height+document.getElementById("newsdiv-p2").style.height);
        scrollFromBottom();  
    }

    var go = 0;
    var timeout = '';
    function scrollFromBottom(){

        clearTimeout(timeout);
        var el = document.getElementById("newsdiv");
        if(el.scrollTop >= el.scrollHeight-'<%=box_height %>'){
            el.scrollTop = 0;
        };

        el.scrollTop = el.scrollTop + speed;
        if(go == 0){
            timeout = setTimeout("scrollFromBottom()",50);
        };
    }

    function stop(){
        go = 1;
   }

   function startit(){
       go = 0;
      scrollFromBottom();
    }
// -->

    function window_onload() {
    init();

}
// ]]>
</script>


<%--<asp:Panel ID="newsdiv" runat="server" onmouseout="startit();" onmouseover="stop();">--%>
    <div id="newsdiv"  onmouseout="startit();" onmouseover="stop();"  >
        <p id="newsdiv-p1" class="spacer"></p>
        <asp:Label ID="lblNews" runat="server" Text="News..."></asp:Label>
        <p id="newsdiv-p2" class="spacer"></p>
    </div>
<%--</asp:Panel>--%>

@Marcel,我想你的意思是来源(右键单击,查看源代码并复制代码)?

如果是这样,这里又一次,谢谢

    <script type="text/javascript" for="window" event="onload">
// <!CDATA[
return window_onload()
// ]]>
</script>

<script type="text/javascript">
// <!CDATA[

// <!--
var speed = 2;

$(document).ready(function init(){
  var el = document.getElementById("newsdiv");
  el.style.overflow = 'hidden';
  el.style.height='150';
  el.style.width='166';
   el.style.padding='0 0 0 20';
   el.style.color='black';

var el2 = document.getElementById("newsdiv-p1");

  el2.style.height='150';
var el3 = document.getElementById("newsdiv-p2");

  el3.style.height='150';  
  //alert(document.getElementById("newsdiv-p2").style.height+document.getElementById("newsdiv-p2").style.height);
  scrollFromBottom();


 }); 
var go = 0;
var timeout = '';
function scrollFromBottom(){

  clearTimeout(timeout);
  var el = document.getElementById("newsdiv");
  if(el.scrollTop >= el.scrollHeight-'150'){
    el.scrollTop = 0;

  };
  el.scrollTop = el.scrollTop + speed;
  if(go == 0){
    timeout = setTimeout("scrollFromBottom()",60);
  };
}

function stop(){
  go = 1;
}

function startit(){
  go = 0;
  scrollFromBottom();
}
// -->

function window_onload() {
init();

}

// ]]>
</script>
<div id="newsdiv"  onmouseout="startit();" onmouseover="stop();"  >
<p id="newsdiv-p1" class="spacer">
    </p>
    <span id="NewsScroller1_lblNews"><a href='#' OnClick=javascript:window.open('newsDetail.aspx?NewsID=10','NewsDetail','width=800,height=600;toolbar=no;');><font face='verdana' size='2' color='#184D68'>Steve's Birthday</font><br><br><a href='#' OnClick=javascript:window.open('newsDetail.aspx?NewsID=15','NewsDetail','width=800,height=600;toolbar=no;');><font face='verdana' size='2' color='#184D68'>Our Anniversary</font><br><br><a href='#' OnClick=javascript:window.open('newsDetail.aspx?NewsID=14','NewsDetail','width=800,height=600;toolbar=no;');><font face='verdana' size='2' color='#184D68'>Jessie's Birthday</font><br><br></span>
    <p id="newsdiv-p2" class="spacer"></p>
</div>

我仍然试图将这个伟大的论坛如何运作。 昨天,我能看到一个按钮,上面写着“添加评论”。 从今天开始,我一直无法看到它。 我想我的问题是,你如何重新登录以便能够添加评论等? 登录似乎是cookie驱动的,这意味着一旦你关闭浏览器,你的权限就会消失,不是吗?

在这种情况下,错误消息“Object required”意味着变量el2不包含HTMLElement对象。

ID的元素区分大小写,因此您无法获取元素

<p id="newsdiv-p1" class="spacer"></p>

运用

var el2 = document.getElementById("newsDiv-p1");

此外,您无法访问尚未呈现的元素。 把你的功能在onload处理程序或标记

顺便说一句, script元素的language属性很久以前就已被弃用了


更新:这段代码

<script type="text/javascript" for="window" event="onload">
// <!CDATA[
    return window_onload()
// ]]>
</script>

使用特定IE的方式来附加事件处理程序。 永远不要用它!

相反,使用DOM级别2方法或仅使用

window.onload = window_onload;

在开始与DOM交互之前,您需要确保DOM已准备就绪。

我建议使用jQuery并在.ready()事件处理程序中包装DOM交互式代码,如下所示:

$(document).ready(function(){
   init();
});

这样,您可以确保在开始引用它们之前存在所有元素,如jQuery API参考中所述

传递给.ready()的处理程序保证在DOM准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。

确保页面中有可用的java脚本功能。 有时在没有方法可访问时会出现此类错误。

把你的脚本标签放在newsDiv之后。 我认为问题出现是因为html尚未呈现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM