您的描述向我表明,除了使用 PHP 的 JSON 编码功能之外,您没有以任何方式使用 JSON。听起来您正在将 PHP 关联数组编码为 JSON 字符串,然后将该字符串写入 HTML 输出。如果是这种情况,那么您的 JSON 确实是一个 JavaScript 对象。
所以让我们假设你得到的标记是这样的:
<script>
// Using a global here, which is not good,
// but this is an example.
var myWordList = {"word1":1,"word2":2,"word3":3};
</script>
<ul id="wordlist">
<li id="word1">1</li>
<li id="word2">2</li>
<li id="word3">3</li>
</ul>
请注意,我的 id 属性值是唯一的。您多次使用相同的 id 属性值;那是无效的标记。此外,对于这个示例,我使每个列表元素中的标记保持简单(只是文本)。
因此,鉴于此标记,我们可以编写以下 JavaScript:
<script>
// Update our wordlist object with some descriptions
myWordList.word1 = {
"value": myWordList.word1,
"description": "This is word 1."
};
myWordList.word2 = {
"value": myWordList.word2,
"description": "This is word 2."
};
myWordList.word3 = {
"value": myWordList.word3,
"description": "This is word 3."
};
// Now lets update the unordered list with jQuery
for (var i = 1; i < 4; i += 1) {
$('#word' + i).html(myWordList['word' + i].description);
}
</script>
在这个 JavaScript 中,我首先myWordList
通过为每个值分配一个新对象来更新这些值。这些新对象有两个属性:一个value
分配了旧myWordList.word#
值的属性,以及一个description
描述单词的新属性。接下来,我通过将单词值替换为单词描述来更新无序列表。
编辑:
如果要遍历对象中的属性,可以这样做:
for (var key in myWordList) {
if (myWordList.hasOwnProperty(key)) {
console.dir(myWordList[key]);
}
}