2011-03-24 109 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