Javascript错误:未定义或不是对象
我正在为股票代码编写javascript,页面上出现了一些运行时错误 使用VS2008开始调试时,将显示 Microsfot JS运行时错误:tickerText未定义 脚本如下:Javascript错误:未定义或不是对象,javascript,Javascript,我正在为股票代码编写javascript,页面上出现了一些运行时错误 使用VS2008开始调试时,将显示 Microsfot JS运行时错误:tickerText未定义 脚本如下: <style type="text/css"> #ticker-area, #ticker-area ul li a {font-size:13px;font-family:Arial, Helvetica, sans-serif;;font-weight:normal;} </style>&
<style type="text/css">
#ticker-area, #ticker-area ul li a {font-size:13px;font-family:Arial, Helvetica, sans-serif;;font-weight:normal;}
</style><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<style type="text/css">
a:link, a:visited {text-decoration:none}
a:hover {text-decoration:none;}
</style>
<script type="text/javascript">
var tickerText = 0;
function createTicker(){
// put all list elements within #ticker-area into array
var tickerLIs = $("#ticker-area ul").children();
tickerItems = new Array();
tickerLIs.each(function(el) {
tickerItems.push( jQuery(this).html() );
});
i = 0
rotateTicker();
}
function rotateTicker(){
if( i == tickerItems.length ){
i = 0;
}
tickerText = tickerItems[i];
c = 0;
typetext();
setTimeout( "rotateTicker()", 5000 );
i++;
}
var isInTag = false;
function typetext() {
var thisChar = tickerText.substr(c, 1);
if( thisChar == '<' ){ isInTag = true; }
if( thisChar == '>' ){ isInTag = false; }
$('#ticker-area').html(" " + tickerText.substr(0, c++));
if(c < tickerText.length+1)
if( isInTag ){
typetext();
}else{
setTimeout("typetext()", 28);
}
else {
c = 1;
tickerText = "";
}
}
$(document).ready(function() {
var soapEnv =
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
<soapenv:Body> \
<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
<listName>Alerts</listName> \
<viewName></viewName> \
<viewFields> \
<ViewFields> \
<FieldRef Name='Title' /> \
<FieldRef Name='Link' /> \
<FieldRef Name='ID' /> \
</ViewFields> \
</viewFields> \
<rowLimit>6</rowLimit> \
</GetListItems> \
</soapenv:Body> \
</soapenv:Envelope>";
$.ajax({
url: "_vti_bin/lists.asmx",
type: "POST",
dataType: "xml",
data: soapEnv,
complete: processResult,
contentType: "text/xml; charset=\"utf-8\""
});
});
function processResult(xData, status) {
$(xData.responseXML).find("z\\:row").each(function() {
var url = "/Lists/Alerts/DispForm.aspx?ID=" + $(this).attr("ows_ID");
var liHtml = "<a href='" + url + "' style='color:#000000;'> "+ $(this).attr("ows_Title") + "...</a>";
$("#listticker").append(liHtml);
});
createTicker();
}
</script>
<div id="ticker-area" style="font-size:13px;overflow:hidden;color: #EEFFFF" width="100%">
<marquee id="listticker" class="hiddenlink" direction="left" scrollamount="4" loop=infinite HSPACE=10 onmouseover="this.stop()" onmouseout="this.start()"></marquee></div>
#股票区域,#股票区域ul li a{字体大小:13px;字体系列:Arial,Helvetica,无衬线;;字体重量:正常;}
a:链接,a:已访问{文本装饰:无}
a:悬停{文本装饰:无;}
var tickerText=0;
函数createTicker(){
//将#ticker区域内的所有列表元素放入数组
var tickerLIs=$(“#ticker area ul”).children();
tickerItems=新数组();
tickerLIs.每个(功能(el){
push(jQuery(this.html());
});
i=0
旋转器();
}
函数旋转器(){
如果(i==ms.length){
i=0;
}
tickerText=tickerItems[i];
c=0;
typetext();
setTimeout(“rotateTicker()”,5000);
i++;
}
var isInTag=假;
函数typetext(){
var thisChar=tickerText.substr(c,1);
如果(thisChar=''){isInTag=false;}
$('#ticker area').html(“+tickerText.substr(0,c++”);
如果(c
请帮我做这个
提前感谢问题在于,
tickerText
是rotateTicker
函数的本地部分,在typetext
函数中不存在。使此代码正常工作的一个快速方法是从第5行中删除“var”,即更改
var tickerText = tickerItems[i];
到
这将使
tickerText
变量成为全局变量,就像i
和c
一样。tickerText的范围在rotateTicker()函数中。在函数之外它将不可用。您必须设置为全局变量。仅限我的thoughts@GustlyWind+1用于在没有缩进的情况下计算。@GustlyWind,这是正确的@Jam,我的定义在哪里?@GustlyWind,请给我看一段代码,在Golball中将“tickerText”声明为tickerText=tickerItems[i],但还是一样error@Jam:好的,那么听起来您在执行rotateTicker()
中的初始化代码之前调用了typetext()
。如果你把你所有的代码都贴出来,我相信有人会帮你的。
tickerText = tickerItems[i];