請原諒我的困惑,因爲我偶然發現這一點,我對JavaScript和這種事情是新手。如果我的代碼是垃圾,請原諒我,因爲它是我找到的例子和我想到的事情的組合(並且沒有弄清楚)!無法讀取屬性'getElementsByTagName'爲空
我試圖運行在開放式轉播軟件這個HTML文件:
<html>
<head>
<link rel="stylesheet" href="css/stylesheet_twitter1.css" type="text/css" charset="utf-8">
<script src="js/jquery-2.0.2.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jstween-1.1.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/countries.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var timestampOld;
var timestamp;
var mText4;
var xmlDoc;
var xhr = new XMLHttpRequest();
var animating = false;
var doUpdate = false;
function init() {
xhr.overrideMimeType('text/xml');
var timeout = this.window.setInterval(function() {
pollHandler();
}, 250);
$('#mText4').html('');
$('#board').tween({
top:{
start: '80',
stop: '0',
units: 'px',
time: 0,
duration: 0.8,
effect:'easeOut'
}
});
$.play();
}
</script>
</head>
<body onLoad="init()">
<script type="text/javascript">
function pollHandler()
{
loadData();
if (timestamp != timestampOld) {
doUpdate = true;
}
if (!animating && doUpdate) {
updateBoard();
}
}
function loadData() {
xhr.open('GET', 'streamcontrol.xml');
xhr.send();
xhr.onreadystatechange = function(){
xmlDoc = xhr.responseXML;
mText4 = getValueFromTag(xmlDoc,'mText4');
timestampOld = timestamp;
timestamp = getValueFromTag(xmlDoc,'timestamp');
}
}
function updateBoard() {
if ($('#mText4').html() != mText4) {
animating = true;
$('#mText4').tween({
opacity: {
start: 100,
stop: 0,
time: 0,
duration: 0.5,
effect: 'easeIn'
},
onStop: function(){
$('#mText4').html(mText4);
}
});
$('#mText4').tween({
opacity: {
start: 0,
stop: 100,
time: 0.5,
duration: 0.5,
effect: 'easeOut'
},
onStop: function(){
animating = false;
}
});
}
$.play();
doUpdate = false;
}
function getValueFromTag (xmlDoc,tag) {
if (xmlDoc.getElementsByTagName(tag).length != 0) {
if (xmlDoc.getElementsByTagName(tag)[0].childNodes.length == 0) {
return '';
} else {
return xmlDoc.getElementsByTagName(tag)[0].childNodes[0].nodeValue;
}
} else {
return '';
}
}
</script>
<div id="board">
<div id="mText4"></div>
</div>
</body>
</html>
它工作得很好,但有這個(和其他兩個HTML文件)去了幾個小時後,該軟件會崩潰。這引起了我看它創建的日誌文件,我看到的時候很多下列內容:
Uncaught TypeError: Cannot read property 'getElementsByTagName' of null @http://absolute/D:/obs%20stuff/browserfiles/Twitter1.html334
於是我就在Firefox,然後將它扔了以下錯誤(同樣,一個LOT):
TypeError: xmlDoc is null
我知道streamcontrol.xml
不是null。我覺得這些錯誤讓我朝着一個好的方向發展,但是在兩天內嘗試了不同的東西,我在不同的線索上看到了大約10多個小時的集體後,我感到很茫然。
'onreadystatechange'經過許多階段。確保你在正確的地方檢查。 –
您是否用[標籤:MSIE]對其進行了測試 – SaidbakR
我已經使用IE進行了測試,所有內容都是災難。缺少各種權限,這是一團糟。我也嘗試過使用Chrome,但沒有完全訪問xml文檔的權限。 – alwade24