Я жестко запрограммировал два значения, которые отображают зеленый значок на том, который имеет онлайн-статус, и красный значок на том, который находится в автономном режиме. Теперь я хочу, чтобы он автоматически добавлял зеленый значок в таблицу при вызове моей функции.
<div class = "col-md-8">
<table class = "table table-bordered table striped " id = "thinker_table" >
<thead class = "thead-dark">
<tr>
<th>Thinker Name</th>
<th>MAC Address</th>
<th>Status</th>
<th>Indicator</th>
<th>Show Routines</th>
<th>Show Devices</th>
</thead>
</tr>
<td>IPLConference Room</td>
<td>XXXXXXXXXXXXX</td>
<td >Online</td>
<td>
<div class = "led-green"></div>
<td> <input type = "button" value = "Click Here" onclick = "window.open('RoutineDetails.php','popUpWindow','height=500,width=700,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');"></td>
<td> <input type = "button" value = "Click Here" onclick = "window.open('DeviceDetails.php','popUpWindow','height=500,width=800,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');"></td>
<tr>
<td>Host_34F60E </td>
<td>XXXXXXXXXX</td>
<td >Offline</td>
<td>
<div class = "led-red"></div>
</td>
<tfoot >
<tr>
<th>Thinker Name</th>
<th>MAC Address</th>
<th>Status</th>
</tfoot >
</table>
</div>
</div>
</div>
Это мой javascript ниже, я отображаю результат в таблице. в таблице должен отображаться зеленый значок, где статус = 1. Поскольку мое условие - если статус = 1, следовательно, я должен получить зеленый значок во всех строках таблицы.
$(document).ready(function(){
$.getJSON("test.json", function(data){
var thinker_data = '';
$.each(data.data, function(key, value){
if (value.status == "1")
{
thinker_data += '<tr>';
thinker_data += '<td>'+value.name+'</td>';
thinker_data += '<td>'+value.mac+'</td>';
thinker_data += '<td>'+value.status+ '</td>';
thinker_data += '</tr>';
}
});
$('#thinker_table').append(thinker_data);
});
});
</script>
Ответ был полезен, но теперь я получаю такой значок

также как добавить две кнопки в таблицу?
Извините за беспокойство, пожалуйста, помогите мне
1. ИСПРАВИТЬ неправильно сформированный HTML.2. затем используйте это с кодом, который вы пробовали в НОВОМ вопросе, люди попытаются помочь вам, четко объясните, что вы пытались сделать, и что именно вы хотите получить в результате.
Обратите внимание, как я отредактировал ваш вопрос без ответа, чтобы проиллюстрировать, как лучше задать вопрос: stackoverflow.com/q/54441134/125981



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не совсем уверен, что понимаю вопрос, но из того, что я прочитал, вы хотите отобразить зеленый кружок, если у пользователя статус = 1. И вы получаете эту информацию из файла json.
Сначала вам нужно создать круги в CSS!
CSS:
.online {
height: 25px;
width: 25px;
background:green;
border-radius: 50%;
border: 1px solid;
display: inline-block;
}
.offline {
height: 25px;
width: 25px;
background:red;
border-radius: 50%;
border: 1px solid;
display: inline-block;
}
Затем, когда вы создаете новую строку, у вас есть класс «онлайн» для нужного столбца:
$.each(data.data, function(key, value){
if (value.status == "1")
{
thinker_data += '<tr>';
thinker_data += '<td>'+value.name+'</td>';
thinker_data += '<td>'+value.mac+'</td>';
thinker_data += '<td class = "online"></td>';
thinker_data += '<td></td>' //to make the "Indicator" column space
thinker_data += '<td> <input type = "button" value = "Click Here" onclick = "window.open(\'RoutineDetails.php\',\'popUpWindow\',\'height=500,width=700,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes\');"></td><td> <input type = "button" value = "Click Here" onclick = "window.open(\'DeviceDetails.php\',\'popUpWindow\',\'height=500,width=800,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes\');"></td>'
thinker_data += '</tr>';
}
});
Обратите внимание, что я создал пример ввода, потому что у меня нет доступа к файлу «test.json».
Проверьте JSFiddle для рабочего примера.
Если вам также не нужен красный кружок для статуса = 0, используйте офлайн-класс!
$(document).ready(function() {
var thinker_data = '';
let data = {
"data": [{
"name": "text",
"mac": "SOMETHIN5239321",
"status": "1"
}, {
"name": "tex2t",
"mac": "S23THIN5239321",
"status": "1"
}]
};
$.each(data.data, function(key, value) {
if (value.status == "1") {
thinker_data += '<tr>';
thinker_data += '<td>' + value.name + '</td>';
thinker_data += '<td>' + value.mac + '</td>';
thinker_data += '<td class = "online"></td>';
thinker_data += '<td></td>' //to make the "Indicator" column space
thinker_data += '<td> <input type = "button" value=\Click Here" onclick = "window.open(\'RoutineDetails.php\',\'popUpWindow\',\'height=500,width=700,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes\');"></td><td> <input type = "button" value = "Click Here" onclick = "window.open(\'DeviceDetails.php\',\'popUpWindow\',\'height=500,width=800,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes\');"></td>';
thinker_data += '</tr>';
}
});
$('#thinker_table').append(thinker_data);
});.online {
height: 25px;
width: 25px;
background: green;
border-radius: 50%;
border: 1px solid;
display: inline-block;
}
.offline {
height: 25px;
width: 25px;
background: red;
border-radius: 50%;
border: 1px solid;
display: inline-block;
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class = "col-md-8">
<table class = "table table-bordered table striped " id = "thinker_table">
<thead class = "thead-dark">
<tr>
<th>Thinker Name</th>
<th>MAC Address</th>
<th>Status</th>
<th>Indicator</th>
<th>Show Routines</th>
<th>Show Devices</th>
</tr>
</thead>
<td>IPLConference Room</td>
<td>XXXXXXXXXXXXX</td>
<td>Online</td>
<td>
<div class = "led-green"></div>
<td> <input type = "button" value = "Click Here" onclick = "window.open('RoutineDetails.php','popUpWindow','height=500,width=700,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');"></td>
<td> <input type = "button" value = "Click Here" onclick = "window.open('DeviceDetails.php','popUpWindow','height=500,width=800,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');"></td>
<tr>
<td>Host_34F60E </td>
<td>XXXXXXXXXX</td>
<td>Offline</td>
<td>
<div class = "led-red"></div>
</td>
<tfoot>
<tr>
<th>Thinker Name</th>
<th>MAC Address</th>
<th>Status</th>
</tfoot>
</table>
</div>Обновлено: Я отредактировал код и фрагмент, чтобы повторять ваши кнопки в каждом столбце. Я думаю, что это не лучшее решение, но вы не очень ясно представляете, какова ваша цель/какова ваша среда.
Я не мог придумать, как написать такой простой класс. thinker_data += '<td class = "online"></td>';
Как мне также вызвать функцию кнопки здесь, в javascript
добавил фрагмент из скрипки, чтобы сделать его всеобъемлющим в качестве ответа.
Спасибо! @МаркШультхайс
Что ты имеешь в виду @arslaanmalik ? Я видел ваше редактирование, но я не понимаю вашей проблемы.
Бро, теперь я хочу скопировать кнопки в таблице так же, как мы сделали светодиод. Кнопки созданы выше
Я не полностью слежу за цепочкой событий в этом вопросе и где вы находитесь сейчас, но из того, что я понял, вы хотите знать, как вы можете добавлять кнопки в свою таблицу с допустимыми вызовами функций onClick?
Я предпочитаю использовать шаблонные строки при написании html в javascript и просто интерполировать переменные. Выглядит очень чистым
$(document).ready(function(){
$.getJSON("test.json", function(data){
var thinker_data = '';
$.each(data.data, function(key, value){
if (value.status == "1")
{
thinker_data += `
<tr>
<td>${value.name}</td>
<td>${value.mac}</td>
<td>${value.status}</td>
<td>
<button onClick = "location.href='https://www.example.com'">Click Me</button>
</td>
<td>/* Or an interpolated url in case it should be dynamic */</td>
<td>
<button onClick = "location.href='${interpolatedUrl}'">Click Me</button>
</td>
</tr>
`;
}
});
$('#thinker_table').append(thinker_data);
});
});
</script>
Итак, вы говорите, что я должен использовать обработчики событий? например, создать даже щелчок, который запустит функцию.? Как мне это сделать. Я просто хочу, чтобы кнопки отображались, и кнопка должна просто перейти к указанному местоположению. ссылка
О, понятно, тогда мой пример можно упростить, используя либо <a href = "https://www.example.com">Click Me</a>. Однако эта ссылка не будет выглядеть как кнопка, если только вы не использовали Bootstrap или не написали какой-либо CSS, чтобы самостоятельно оформить ее как кнопку. В качестве альтернативы вы можете сохранить методологию кнопки onClick и просто заменить javascript, вызываемый при нажатии: <button onClick = "location.href = 'https://www.example.com'">Click Me</button>
«Выглядит очень чисто» - я склонен не соглашаться, когда он переходит к более сложному набору элементов / html, но это только мое мнение - все это пустое пространство вводится на страницу и т. д. Но опять же только ИМХО.
Каждому свое, я полагаю, мне следовало добавить отказ от ответственности «IMO» ? Обычно меня больше заботит, чтобы мой Javascript выглядел аккуратно, а не html моей страницы, поскольку я трачу больше времени на работу со скриптами, чем на просмотр узлов DOM.
Как правило, этот сайт работает так: задайте весь вопрос сразу или, если вы обнаружите, что редактируете вопрос, чтобы добавить новый вопрос (вопросы) в качестве НОВОГО вопроса со ссылкой на этот.