Stack Overflow на русском Asked by xakslim on December 14, 2020
Получаю ответ от сервера и на его основе выводу на страницу результаты поиска. в значениях может приходить null. Если приходит null, то на странице нужно вывести пустой блок. Пробовал прописать тернарный оператор для ip – получаю абракадабру на странице. Как правильно описать условие?
if (response.length > 0) {
response.forEach(function (item) {
resulList += '<div class="table-row" data-id="' + item.id + '">' +
'<div class="table-cell"><input type="checkbox" name=""></div>' +
'<div class="table-cell">' + item.full_name + '</div>' +
'<div class="table-cell">' + item.category__name + '</div>' +
'<div class="table-cell">' + (item.ip) ? item.ip : "" + '</div>' +
'<div class="table-cell">' + item.domain_name + '</div>' +
'<div class="table-cell">' + item.hardware_purpose + '</div></div>';
})
}
Выучить приоритеты операторов https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
Ваши строки
... +
'<div class="table-cell">' + (item.ip) ? item.ip : "" + '</div>' +
...
эквивалентны
(... + '<div class="table-cell">' + item.ip) ? (item.ip) : ("" + '</div>' + ...)
А вам надо написать
'<div class="table-cell">' + (item.ip ? item.ip : "") + '</div>' +
// или даже проще
'<div class="table-cell">' + (item.ip || "") + '</div>' +
Correct answer by Alexey Ten on December 14, 2020
Если я правильно понял вашу проблему, то вам нужно вот эту часть кода (item.ip) ? item.ip : ""
заменить на (item.ip || "")
(тут тернарный не нужен), так как этим враппом в выражение вы четко указываете приоритет выполнения, а на данный момент у вас происходит изначальное вычисление всего до знака ?
, становится условием истинности и выводит результат вычисления item.ip + всё после окончания тернарного оператора
.
Answered by Максим Вишневский on December 14, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP