Что не так с этим JS, если условие теста? - PullRequest
2 голосов
/ 28 июня 2011

этот код работает без проверки условия if, где я ошибаюсь с условием if?

$(document).ready(function() {
  if ($("input[name=contest_open]").val() == true) {
  var refreshId = setInterval(function()
  {
       $('#tweets').fadeOut("slow").fadeIn("slow");
       $.get("/event", { event:$("input[name=event]").val(), }, function(data) {
         console.log(data.success);
         console.log(data.page_link);
         console.log('Succesfully Loaded Data from JSON FORMAT GET');
         $('#tweets').html(data.html);
         $('#pagelink').html(data.page_link);
       });      
  }, 30000); 
  }
})

Ответы [ 5 ]

3 голосов
/ 28 июня 2011

Проблема в том, что val не возвращает логическое значение.Если вы пытаетесь проверить, является ли value из input[name=contest_open] не пустым, попробуйте вместо этого val() !== "".

Если вы пытаетесь проверить, является ли значение строкой "true", вам необходимоtrue заключить в кавычки.

2 голосов
/ 28 июня 2011

val () вернет строку.

Используйте это, если вы хотите проверить "true"

$(document).ready(function() {
  if ($("input[name=contest_open]").val() === "true") {
  var refreshId = setInterval(function()
  {
       $('#tweets').fadeOut("slow").fadeIn("slow");
       $.get("/event", { event:$("input[name=event]").val(), }, function(data) {
         console.log(data.success);
         console.log(data.page_link);
         console.log('Succesfully Loaded Data from JSON FORMAT GET');
         $('#tweets').html(data.html);
         $('#pagelink').html(data.page_link);
       });      
  }, 30000); 
  }
})
1 голос
/ 28 июня 2011

Если вы хотите проверить существование, используйте:

if ($("input[name=contest_open]").val()) 

только.

С другой стороны, если вы намереваетесь проверить содержимое на «true», вы можете использовать

if ($("input[name=contest_open]").val() == "true")

По той простой причине, что функция val () возвращает строку.

0 голосов
/ 28 июня 2011

Попробуй это. Если вы считаете, что значение может содержать «True», лучше преобразовать его в нижний регистр.

$(document).ready(function() {
  if ($("input[name=contest_open]").val() == "true") {
  var refreshId = setInterval(function()
  {
       $('#tweets').fadeOut("slow").fadeIn("slow");
       $.get("/event", { event:$("input[name=event]").val(), }, function(data) {
         console.log(data.success);
         console.log(data.page_link);
         console.log('Succesfully Loaded Data from JSON FORMAT GET');
         $('#tweets').html(data.html);
         $('#pagelink').html(data.page_link);
       });      
  }, 30000); 
  }
})
0 голосов
/ 28 июня 2011

Ну, так как у вас есть ==, 1 или объект также будут оцениваться как истинные. С === он будет оцениваться как true, только если это логическое значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...