我正在尝试在我们网站的主页上粘贴新闻滚动条。
我对我收到的错误消息感到有点困惑,因为我在一台PC上得到它但在另一台PC上得不到它:
需要对象
我正在使用以下代码,但当我在Object Required
上将此文件用作网络用户控件时,以下行仍然会出现default.aspx page
错误:
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驱动的,这意味着一旦你关闭浏览器,你的权限就会消失,不是吗?
答案 0 :(得分:5)
在这种情况下,错误消息“需要对象”表示变量el2
不包含HTMLElement
对象。
元素的ID区分大小写,因此您无法获取元素
<p id="newsdiv-p1" class="spacer"></p>
使用
var el2 = document.getElementById("newsDiv-p1");
此外,您无法访问尚未渲染的元素。将您的函数放在onload
处理程序或标记后。
BTW,很久以前language
元素has been deprecated的script
属性。
更新:这段代码
<script type="text/javascript" for="window" event="onload">
// <!CDATA[
return window_onload()
// ]]>
</script>
使用IE-specific way附加事件处理程序。 永远不要使用它!
相反,请使用DOM level 2 method或
window.onload = window_onload;
答案 1 :(得分:1)
在开始与DOM交互之前,您需要确保DOM已准备就绪。
我建议使用jQuery并在.ready()事件处理程序中包装DOM交互式代码,如下所示:
$(document).ready(function(){
init();
});
通过这种方式,您可以确保在开始引用它们之前存在所有元素,如jQuery API reference中所述:
传递给.ready()的处理程序是 保证在之后执行 DOM准备就绪,所以通常是这样的 附加所有其他活动的最佳场所 处理程序并运行其他jQuery代码。
答案 2 :(得分:0)
将你的脚本标签放在newsDiv之后。我认为问题出现是因为html尚未呈现。
答案 3 :(得分:0)
确保您的页面中有可用的java脚本功能。有时候,当没有方法可以访问时,你会遇到这样的错误。