Автоматически добавлять css класса div в функцию javascript

Я жестко запрограммировал два значения, которые отображают зеленый значок на том, который имеет онлайн-статус, и красный значок на том, который находится в автономном режиме. Теперь я хочу, чтобы он автоматически добавлял зеленый значок в таблицу при вызове моей функции.

<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>

Ответ был полезен, но теперь я получаю такой значок Автоматически добавлять css класса div в функцию javascript

также как добавить две кнопки в таблицу?

Как правило, этот сайт работает так: задайте весь вопрос сразу или, если вы обнаружите, что редактируете вопрос, чтобы добавить новый вопрос (вопросы) в качестве НОВОГО вопроса со ссылкой на этот.

Mark Schultheiss 25.02.2019 12:53

Извините за беспокойство, пожалуйста, помогите мне

arslaanmalik 25.02.2019 12:54

1. ИСПРАВИТЬ неправильно сформированный HTML.2. затем используйте это с кодом, который вы пробовали в НОВОМ вопросе, люди попытаются помочь вам, четко объясните, что вы пытались сделать, и что именно вы хотите получить в результате.

Mark Schultheiss 25.02.2019 12:56

Обратите внимание, как я отредактировал ваш вопрос без ответа, чтобы проиллюстрировать, как лучше задать вопрос: stackoverflow.com/q/54441134/125981

Mark Schultheiss 25.02.2019 15:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
308
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я не совсем уверен, что понимаю вопрос, но из того, что я прочитал, вы хотите отобразить зеленый кружок, если у пользователя статус = 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>';

arslaanmalik 25.02.2019 11:53

Как мне также вызвать функцию кнопки здесь, в javascript

arslaanmalik 25.02.2019 12:09

добавил фрагмент из скрипки, чтобы сделать его всеобъемлющим в качестве ответа.

Mark Schultheiss 25.02.2019 13:03

Спасибо! @МаркШультхайс

H. Figueiredo 25.02.2019 13:11

Что ты имеешь в виду @arslaanmalik ? Я видел ваше редактирование, но я не понимаю вашей проблемы.

H. Figueiredo 25.02.2019 13:11

Бро, теперь я хочу скопировать кнопки в таблице так же, как мы сделали светодиод. Кнопки созданы выше

arslaanmalik 25.02.2019 13:13

Я не полностью слежу за цепочкой событий в этом вопросе и где вы находитесь сейчас, но из того, что я понял, вы хотите знать, как вы можете добавлять кнопки в свою таблицу с допустимыми вызовами функций 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>

Итак, вы говорите, что я должен использовать обработчики событий? например, создать даже щелчок, который запустит функцию.? Как мне это сделать. Я просто хочу, чтобы кнопки отображались, и кнопка должна просто перейти к указанному местоположению. ссылка

arslaanmalik 25.02.2019 13:43

О, понятно, тогда мой пример можно упростить, используя либо <a href = "https://www.example.com">Click Me</a>. Однако эта ссылка не будет выглядеть как кнопка, если только вы не использовали Bootstrap или не написали какой-либо CSS, чтобы самостоятельно оформить ее как кнопку. В качестве альтернативы вы можете сохранить методологию кнопки onClick и просто заменить javascript, вызываемый при нажатии: <button onClick = "location.href = 'https://www.example.com'">Click Me</button>

Drowsy 25.02.2019 13:55

«Выглядит очень чисто» - я склонен не соглашаться, когда он переходит к более сложному набору элементов / html, но это только мое мнение - все это пустое пространство вводится на страницу и т. д. Но опять же только ИМХО.

Mark Schultheiss 25.02.2019 15:12

Каждому свое, я полагаю, мне следовало добавить отказ от ответственности «IMO» ? Обычно меня больше заботит, чтобы мой Javascript выглядел аккуратно, а не html моей страницы, поскольку я трачу больше времени на работу со скриптами, чем на просмотр узлов DOM.

Drowsy 25.02.2019 15:20

Другие вопросы по теме