2014-10-17 66 views
0

我正在尝试更改“h3”标签之间的文本。新文本应该从json文件中移出。但是,当json文件中的字段被正确读取时,程序无法找到“h3”元素。 这里是JSON文件的一部分:为什么我找不到ID?

var teachers=JSON.parse(string_teachers); 
var i; 
var T_name; 
var Subject; 
for (i=1; i<teachers.Teachers.length+1; i++) { 
    T_name=teachers.Teachers[i-1].T_name; 
    Subject=teachers.Teachers[i-1].Subject; 
    var str="#"+i; 
    $(str).find("h3").text(T_name); 
} 

和HTML的一部分:

<div class="grid" id="1"> 

    <img src="teachers/bobr.jpg"> 
    <h3 >Боброва Даша</h3> 
    <p>Математический анализ</p> 
</div> 
<div class="divider"> 
<img src="views/divider.png" > 
</div> 
<div class="grid" id="2"> 
    <img src="teachers/korolev.jpg"> 
     <h3>Королев Даня</h3> 
     <p>Программирование 1</p> 
    </div> 
+0

的JSON是好的,我已经在网上检查服务 – 2014-10-17 21:40:08

+0

找到是从jQuery不纯的json确定你有那个库吗? – meda 2014-10-17 21:41:07

+0

您确定这是您的确切代码。因为'(str).find(“h3”)'应该抛出'undefined不是函数'或类似的东西,因为'str'是一个字符串,而一个字符串没有'find'函数。 – 2014-10-17 21:42:23

回答

2

看起来你缺少jQuery函数。在这里:

(str).find("h3").text(T_name); 

使用它:

$(str).find("h3").text(T_name); 

我错过了一些在JSON,尤尔的问题是:DOM是没有装载然而,当您试图访问它

function foo() { 

var string_teachers = '{"Teachers":[{"T_name":"value1", "Subject": "value2"},{"T_name":"value2",   "Subject": "value2"}]}' 

var teachers = JSON.parse(string_teachers); 
var i; 
var T_name; 
var Subject; 
for (var i = 0; i < teachers.Teachers.length; i++) { 
    T_name = teachers.Teachers[i].T_name; 
    Subject = teachers.Teachers[i].Subject; 
    var str = "#" + (i+1); 
    console.log(str) 
    $(str).find("h3").html(T_name); 
} 
} 
$(document).ready(foo) 
+0

好赶上我只是注意到了这个 – meda 2014-10-17 21:44:52

+0

对不起,这是我不正确的代码粘贴。当然,我有这个功能,所以$现在不能解决问题:-( – 2014-10-17 21:54:26

+0

你正在循环JSON错误,JSON不是一个数组,所以它没有.length属性。我将编辑我的帖子,添加一些代码 – afmeva 2014-10-17 22:12:32