2016-07-11 3 views
0

http://codepen.io/PaxBlueRibbon/pen/wWJWXjмой Javascript флажок не делает ничего

Я пытаюсь научить себя Javascript, но это Фаренгейта/Цельсия переключатель ничего не делает. Я настроил мой переключатель так:

$(document).ready(function getPosition() { 
    if (document.getElementById('myonoffswitch').checked) { 
    var unit = "Fahrenheit"; 
    } else { 
    var unit = "Celsius"; 
    } 

и установить условными в JS нравится эта

 var tempKelvin = json.main.temp; 
     var tempFahrenheit = tempKelvin * 1.8 - 459.67; 
     var tempCelsius = tempKelvin - 273.15; 
     if (unit == "Fahrenheit") { 
     $(".temp").html(Math.round(tempFahrenheit) + " Degrees " + unit); 
     } 
     if (unit == "Celsius") { 
$(".temp").html(Math.round(tempCelsius) + " Degrees " + unit); 
     } 

The FAHRENHEIT работает, и если я изменить переменную на что-то еще она перестает работать, но я не могу Не получишь, чтобы показать Цельсию.

+0

Вы только установив значение 'unit' раз. Вам нужно будет изменить его, когда изменится ваш 'myonoffswitch'. –

+0

- это ваш переключатель или переключатель? Я думаю, вам может потребоваться проверить статус вашего коммутатора динамически, используя обработчик событий. – Will

+0

http://codepen.io/anon/pen/OXOVGa, если вы посмотрите на консоль, вы заметите, что устройство обновляется, но не обнаруживается в функции json. Я поместил журнал в функцию json, чтобы показать текущее устройство, и всегда казалось, что он показывает Fahrenheit, независимо от изменения ??? –

ответ

1

Поскольку вы используете jQuery.

// you should add event listener. 
$('#myonoffswitch').change(function(){ 
    // and change "unit" every time checkbox is changed 
    unit = $(this).prop('checked') ? 'Fahrenheit' : 'Celsius'; 
    // change html here 
}); 

А вы можете назвать это событие на странице загрузки

$('#myonoffswitch').change(); 
+0

Я пытаюсь выяснить, где в моем коде разместить их так, чтобы они запускались в нужное время –

+0

Поместите его в '$ (document) .ready()' функция. – Barmar

+0

Я бы предложил вам немного изменить ваш код. Сначала определите переменные _global_, такие как 'var unit, location;' и т. Д. Наверху, и измените каждый из них соответственно (изменился флажок, загружен JSON и т. Д.). Разделите каждое действие на отдельные функции. (выражение getLocation(), drawHTML() и т. д.). Вызовите их, когда они понадобятся (уравнение загрузки страницы, флажок изменен, промежуток времени и т. Д.) И позволяют им использовать переменные _global_, определенные ранее. – exabyssus

Смежные вопросы