2011-03-24 88 views
-1

我写了北京时间一个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><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("&nbsp;" + 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;'>&nbsp;&nbsp;&nbsp;&nbsp;"+ $(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> 

请帮我在这

在此先感谢

+4

'tickerText'的范围在rotateTicker()函数内。它不会在函数之外提供。你必须设置为全局变量..只是我的想法 – GustyWind 2011-03-24 04:26:38

+0

@GustlyWind +1用于计算没有缩进的情况。 – 2011-03-24 04:27:19

+0

@GustlyWind,这是正确的。 @Jam,我在哪里定义的? – 2011-03-24 04:33:43

回答

0

的问题是,tickerText是本地rotateTicker功能,并在typetext功能不存在。一个快速的方法,以使此代码工作是从第5行中删除“变种”,即改变

var tickerText = tickerItems[i]; 

tickerText = tickerItems[i]; 

,这将使tickerText变量全球性的,就像ic是。

+0

我改变了它作为tickerText = tickerItems [i]; ,但它仍然是相同的错误 – Jam 2011-03-24 05:01:51

+0

@Jam:好的,那么它听起来是在执行'rotateTicker()'中的初始化代码之前调用'typetext()'。如果您发布所有代码,我相信有人可以提供帮助。 – Martin 2011-03-24 05:04:32

+0

放置我在该部分使用的所有代码 – Jam 2011-03-24 05:09:08