2

认为我在这里遗漏了一些明显的出血,希望能提供任何帮助。提前致谢。

我有以下代码但是当我运行它时它会中断并说 .textContent 不能应用于 queryString 因为 queryString 是未定义的。

然而,让我感到震惊的是,如果我在这一行之前中断代码并查看 queryString 它存储的是正确的值,即".titlearea .pagetitle". 为什么这不在后续行中翻译?

JSON 对象被转换为返回我希望使用的两个属性的对象。一个名为的属性termName和另一个名为的属性definition。我想用这些参数的值替换两个 HTML 元素的 textContent。

我已将termName和的值存储definiton在一个名为 的数组中content。我在for...in循环中这样做。

然后我想遍历这个数组并用数组中的相关值替换相关的 HTML 元素content。这是第二个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);
4

1 回答 1

1

您将此标记为 Windows 8,因此我假设您使用的是某种形式的 Internet Explorer。问题是,某些版本的 IE 不支持querySelectorquerySelectorAll. 我认为这是你的问题。尝试记录这两种方法,看看它说了什么。如果它返回undefined,则该浏览器中没有对这些方法的本机支持。


所以事实证明这是因为你在使用<=循环终止条件的一部分时循环,而不是<我之前指出的,但不确定这是问题的原因。很高兴我能帮上忙。

于 2012-12-24T14:55:34.697 回答