2017-01-10 2 views
3

Я пытаюсь добавить некоторые данные в таблицу html, используя jquery, который работает нормально, но когда данные являются пустыми или пустыми, мне нужно добавить другой div в эту таблицу html.Как проверить ajax data.d имеет значение null в append?

Am пытается как этот

$("#table").append(data.d[i].one!=""? 
    "<td id='divs'> 
     <input id="+ data.d[i].one +" type=" + "checkbox" + " class=" + "cbCheck" + "> 
     <label for="+ data.d[i].one +"></label> 
    </td>":"<div></div>"); 

, но он не работает, пожалуйста, помогите мне, как это исправить ...

+1

Ваш код нечитабельно. – plvice

+0

вы забыли добавить '' 'в начало или это просто опечатка? –

+0

Возможный дубликат [Как вы проверяете пустую строку в JavaScript?] (Http://stackoverflow.com/questions/154059/how-do-you-check-for-an-empty-string-in-javascript) –

ответ

1

Никогда не понять, почему кто-то использовать этот

$("#table").append(data.d[i].one!=""? 
    "<td id='divs'> 
     <input id="+ data.d[i].one +" type=" + "checkbox" + " class=" + "cbCheck" + "> 
     <label for="+ data.d[i].one +"></label> 
    </td>":"<div></div>"); 

Вместо этого:

//class declaration 
    function YourTableCell(name, value) { 
     this.input = document.createElement('input'); 
     this.input.value = value; 
     this.input.name = name; 
     this.label = document.createElement('label'); 
     this.label.text = 'My Label'; 
     this.container = document.createElement('td'); 
     this.container.appendChild(this.input); 
     this.container.appendChild(this.label); 
    } 


    //application buisness logic 
    if(data.d[i].one != ''){ 
     var cell = new YourTableCell(data.d[i].name, data.d[i].value); 
     $("#table").append(cell.container); 
    } else { 
     $("#table").append(document.createElement('div')); 
    } 

Используя этот подход, вы можете инкапсулировать ячейку таблицы построение внутри вашего класса и сделать ваш код более читаемым и многоразовым. Кроме того, как я вижу сейчас, вы пытаетесь добавить td внутри чего-то с идентификатором #table и выглядеть неправильно, потому что вы должны добавить td внутри tr.

Кроме того, используя это, вы можете получить ссылки на все объекты, такие как input s и избежать выбора селекторов $ ('input, select, textarea').

0

Вы могли бы использовать:

if(data.d){ 
    //Your code 
} 

Это будет проверять если data.d - NULL или пустая строка "".

Если вы хотите проверить, в каждой итерации использовать индекс i:

if(data.d[i]){ 
    //Your code 
} 

Надеется, что это помогает.

Взгляните на https://stackoverflow.com/a/5515349/4281779.

+1

Я думаю, что это должно быть 'data.d'? –

+0

Спасибо @ Mr.Alien за ваше вмешательство .. обновлено. –

+0

Чтобы быть справедливым, он также проверяет значения 'undefined',' 0', 'NaN',' false' и другие значения фальши. – henrikmerlander

0

Вы могли бы использовать что-то вроде этого,

var html = '<div></div>'; 

if(data.d[i].one) { 
    html = '<td id="divs"><input id="' + data.d[i].one + '" type="checkbox" class="cbCheck"><label for="' + data.d[i].one + '"></label></td>'; 
} 

("#table").append(html);