Изменить цвет светодиода на html - PullRequest
0 голосов
/ 06 января 2020

Я должен изменить цвет светодиода в зависимости от того, есть ли соединение inte rnet или нет. вот что я сделал до сих пор:

стиль. css

.led-green {
  position: relative;
  right: -50% ;
  top: 10%;
  margin: 0 auto;
  width: 24px;
  height: 24px;
  background-color: #ABFF00;

}
.led-red {
  position: relative;
  right: -50% ;
  top: 10%;
  margin: 0 auto;
  width: 24px;
  height: 24px;
  background-color: rgb(255, 0, 0);

}

приложение. js

 /** Check if internet connection is avaiable */
  var  internetConnection =""
  require('dns').resolve('www.google.com', function(err) {
    if (err) {
       console.log("No internet connection");
       internetConnection ="led-red";
    } else {
       console.log("Connected to internet ");
       internetConnection ="led-green";

    }

    console.log(internetConnection)
  });

Я полагаю, что это та часть, в которой у меня возникла проблема

index.e js

  <div class="<%=internetConnection%>"> </div>

Я надеялся, что запустив приложение деление будет установлено так:

<div class ="led-green"> </div> 

или

<div class ="led-red"> </div> 

Есть идеи, как я могу решить это?

спасибо заранее!

Обновление

Я переменная в функции рендеринга следующим образом:

.......................
 res.render('index', {
.....
internetConnection:internetConnection,
...............
}

ОБНОВЛЕНИЕ

проблема не в рендеринге. проблема в том, что страница html не работает, когда я определяю div следующим образом:

">

есть идеи, как это решить? еще раз спасибо за любую подсказку!

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Возможно ли, что ваш ответ будет обработан до того, как ваше приложение решит, доступно ли inte rnet соединение или нет? Мне кажется, что это проблема, с которой вы сталкиваетесь, потому что nodejs является асинхронным.

попробуйте поместить код, который вы используете для отправки ответа клиенту, в обратный вызов dns.resolve (), например:

 var  internetConnection =""
  require('dns').resolve('www.google.com', function(err) {
    if (err) {
       console.log("No internet connection");
       internetConnection ="led-red";
       ejs.render(errorHTMLString, data, options);
    } else {
       console.log("Connected to internet ");
       internetConnection ="led-green";
       ejs.render(noErrorHTMLString, data, options);
    }


  });

Надеюсь, это поможет.

1 голос
/ 06 января 2020

Пожалуйста, убедитесь, что вы вызываете функцию render() в функции обратного вызова resolve():

  var  internetConnection =""
  require('dns').resolve('www.google.com', function(err) {
    if (err) {
       console.log("No internet connection");
       internetConnection ="led-red";
    } else {
       console.log("Connected to internet ");
       internetConnection ="led-green";

    }

    console.log(internetConnection);
    res.render('index', {
      internetConnection:internetConnection,
    }
  });

...