2014-10-03 4 views
0

У меня есть вызов ajax, который возвращает некоторый массив объектов после того, как я отредактировал некоторые значения, и нажмите «Отправить» (эта форма в модальной форме, хотя я сомневаюсь, что она имеет какое-либо отношение к тому, что происходит). В случае успеха, я перехожу к $ .ajax() функции обратного вызова в атрибуте успеха, который выглядит следующим образом:Заголовок таблицы не правильно отображается в jQuery?

function updateTable(newArray){ 
    var tableBody = ""; 

    if (newArray) { 

     tableBody = 
       "<table>" + 
        "<thead>" + 
         "<tr>" + 
          "<th>Name</th>" + 
          "</tr>" + 
        "</thead>" + 
        "<tbody>"; 

     for (var i = 0; i < newArray.length; i++) { 
      tableBody = 
        "<tr>" + 
        "<td>" + newArray[i].name + "<td>" + 
        "</tr>"; 
     } 

     tableBody = tableBody + "</tbody></table>"; 
    } 

    $('#divTable').empty(); 
    $('#divTable').html(tableBody); 
} 

Скажем, нет ничего в элементе в самом начале. Я добавляю некоторое значение и добавляю newArray, и таблица добавляется, но браузер показывает только tbody, без заголовка, хотя я проверяю исходный код веб-сайта, и там написано. Почему это? Имеет ли он связь с заголовком таблицы рендеринга? Я не думаю, что это в рендеринге, потому что текст, который я назначаю одному тегу <p>, тоже не меняется, хотя он также включен в исходный код.

Я пробовал его также с .append() после .empty(), но без изменений.

+0

OT: Вам не нужно вызывать '.empty()' перед '.html()', поскольку '.html()' заменяет все в DIV. – Barmar

+0

Да, я не звонил, но у меня параноик, когда он не работал. – Tommz

ответ

2

Ваш for цикл не прилагается к tableBody, он заменяет его каждый раз. Вы должны использовать += вместо = в задании.

 for (var i = 0; i < newArray.length; i++) { 
      tableBody += 
        "<tr>" + 
        "<td>" + newArray[i].name + "<td>" + 
        "</tr>"; 
     } 
+0

Я не могу поверить, что мне не хватает такой концентрации. Жаль, что этот вопрос никому не нужен. Я думаю, это правда, что вы должны дать кому-то еще иногда смотреть на свой код. – Tommz

+1

Возможно, вам также следует научиться использовать отладчик. Если вы положите точку останова после этого утверждения, вы бы увидели, что все материалы заголовка исчезли. – Barmar

+1

Не чувствуйте себя слишком плохо. Я думаю, что видел десятки вопросов SO, где кто-то делал подобные вещи, например, повторно инициализацию переменной внутри цикла вместо цикла. – Barmar

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