2014-10-17 5 views
0

Я пытаюсь изменить текст между тегами «h3». Новый текст следует перенести из json-файла. Но программа не может найти элемент «h3», в то время как поля из json-файла читаются правильно. Вот часть JSon-файла:Почему я не могу найти идентификатор?

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 нормально, я проверил в онлайн-службе –

+0

найти от jQuery не чистый json уверены, что у вас есть эта библиотека? – meda

+0

Вы уверены, что это ваш точный код. Потому что '(str) .find (" h3 ")' должен вызывать 'undefined 'не функцию' или что-то подобное, поскольку' str' - это строка, а строка не имеет функции 'find'. –

ответ

2

выглядит вам не хватает функции JQuery. здесь:

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

Использование:

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

я отсутствующий некоторые в формате JSON, YOR вопрос: 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

+0

Извините, это была моя неправильная вставка кода. Конечно, у меня была функция, поэтому $ now не решает проблему :-( –

+0

вы зацикливаете JSON неправильно, JSON не является массивом, поэтому он не имеет .length. Я отредактирую свой пост, добавив код – afmeva

Смежные вопросы