2012-12-24 17 views
2

認爲我錯過了一些明顯的出血點,並希望得到任何幫助。提前致謝。嘗試在HTML錯誤上使用textContent時出錯。 「無法設置屬性'textContent'未定義」

我有下面的代碼,但是當我運行它休息時說,.textContent不能應用於queryString,因爲queryString是未定義的。

然而,拋開我的是,如果我在這一行之前破壞代碼並查看queryString,它將存儲正確的值,即".titlearea .pagetitle"。爲什麼這不是在後續行中翻譯?

JSON對象被轉換成一個對象,它返回兩個我希望使用的屬性。名爲termName的房產和另一個名爲definition的房產。我想用這些參數的值替換兩個HTML元素的textContent。

我已將termNamedefiniton的值存儲在名爲content的數組中。我在for...in循環中這樣做。

然後我想遍歷這個數組,並用content數組中的相關值替換相關的HTML元素。這是第二個for循環。

我基本上要的線將被解釋爲:

document.querySelector( 「titlearea .pagetitle」)的textContent = XXXX;

其中xxxx是queryResult[i]的值。

這裏是完整的代碼。

var searchTerm = JSON.parse(Result.responseText); 
var DefDiv = ".titlearea .pagetitle"; 
var DescDiv = ".titlearea .pagesubtitle"; 
var holder = [DefDiv, DescDiv]; 
var content = []; 
var x; 

// Push the query into an array 
for (x in searchTerm.terms[0].term) { 
    content.push(x); 
} 

var displayResult = function(queryResult) { 

    for (var i = 0; i <= holder.length; i++) { 
     var queryString = holder[i]; 

     document.querySelector(queryString).textContent = queryResult[i]; 
    } 
}; 

displayResult(content); 
+1

HTML的外觀如何? – 0x499602D2

+0

順便說一下,在for循環中,'<='應該是'<''。 – 0x499602D2

+0

感謝大衛,你是如何把代碼放在JavaScript語法中的?我會在一秒鐘後發佈HTML,但是我已經測試了硬編碼'「.titlearea .pagetitle」,其中querySelector應該是這樣,並且確實工作正常。 – James

回答

1

您將此標籤標記爲Windows 8,因此我將假設您使用某種形式的Internet Explorer。事情是,某些版本的IE不支持 querySelectorquerySelectorAll。我認爲這是你的問題。嘗試記錄這兩種方法,看看它說什麼。如果它返回 undefined那麼在那個瀏覽器中對於這些方法沒有本地支持。


因此,原來那是因爲你是在使用<=爲一體的循環終止條件,而不是<我前面所指出的,但不知道這是問題的原因的一部分循環。無論如何,我很高興能夠提供幫助。

+0

Windows僅支持ie-ie10的一個版本,它支持查詢選擇器。 –

+0

@DominicHopton所以你完全排除了'document.querySelector'對於他正在使用的瀏覽器返回undefined。 – 0x499602D2

+0

不,我說IE的行爲不是「變量」 - 他聲明Windows 8。該平臺上只有一個版本的IE瀏覽器可用 - IE 10。**支持**支持querySelector [全部] –

相關問題