Javascript с циклом в - PullRequest
       32

Javascript с циклом в

0 голосов
/ 21 октября 2018

работает по следующему коду.Возникли некоторые проблемы с получением пользовательского ввода от дня и температуры.У меня есть начало, но я снова сталкиваюсь с проблемой, когда шаги 2 и 3 не могут передать информацию в массив и выяснить, как ее отобразить.Любое понимание и направление будет принята с благодарностью.Спасибо

var temperatures = [];
var days = ["Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];


var $ = function (id) {
    return document.getElementById(id);
}

var takeTemps = function () {
    //###STEP 2
    //Get the user inputted temp, validate it making sure it's a number
    //if it's valid add it to the temperatures array at the index that
    // corresponds with the day of week, e.g. 0 for Monday, 2 for Wednesday
    var userTemp=(parseFloat($("tempIn").value));
    while (!isNaN(tempIn)==true)
    {
        alert("Please enter a numeric value");
        $("tempIn").focus();
    }


    //This gets the value from the selected menu option
    var index = $("daySelect").value;

    for(var dayTemp in temperatures)
    {
        var daily=temperatures[index]

    }

    //remove this when done, this just tests your menu you wrote for step 1
    alert( index + " indexes day " + days[index]+ userTemp);

    //Call displayTemps ONLY if the temp input was valid.
    displayTemps();

    //EXTRA work / not credit
    // have it auto advance the selected day in the menu
    // by assigning into $("daySelect").value 
    // If it was on Sunday change it to Monday and only on valid input

}

var displayTemps = function () {
    //###STEP 3
    //loop through non-undefined indexes in the temperatures array
    //appended them to tempString adding the day .e.x 
    //Tuesday: 89
    //Friday: 98
    //display the string to the page by setting the value of the textarea
    //
    //In the same loop sum the temperatures and count 
    // how many there are so you can calculate the average
    // and output the average temp on the page.
    tempString = "";
    tempTemp = 0;
    for(var i in temperatures) {
    tempString += index + ": " + temperatures[i];
    }

    document.write(tempString  + "<br>");
    var average =tempTemp+10;
    $("tempList").value=tempString;
    $("avgOut").value=average;
}

window.onload = function () {
    $("addTemp").onclick = takeTemps;

    //###STEP 1
    //Use a for loop here to write options to the select for each day of the week
    // <option value="0">Monday</option>
    // using += here with innerHTML property takes the existing values and concats this on the end
    for (var i =0; i<7; i++)
    {
    $("daySelect").innerHTML +=  "<option value=\""+   i + "\">" + days[i] + "</option>\n";
    $("daySelect").value = ""; 
        //var day=i-1;
        //var day = days[i];
        }
    $("tempIn").focus();

}

Борьба с шагами 2 и 3. Поверьте, у меня есть # 1, хорошо идти, я приложил HTML-код для справки

<html>
    <head>
        <script src=script.js></script>
        <head>
        <body>
            <section>
                <select id="daySelect">
                    <option value="">Select a day</option>
                </select>
                <input type="text" id="tempIn">
                <input type="button" id="addTemp" value="add temperature">
                <br>
                <br>
                <label for="tempList">Temperature List</label>
                <br>
                <textarea id="tempList" rows="7" cols="50"></textarea>
                <br>
                <label>Average Temperature</label>
                <input type="text" id="avgOut" disabled>
            </section>
        </body></html>

1 Ответ

0 голосов
/ 21 октября 2018

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

Когда вы закончите, я отредактирую этот ответ, и вы получите соответствующее руководство.

Продолжайте кодировать!


РЕДАКТИРОВАТЬ

Взгляните:

var userTemp=(parseFloat($("tempIn").value));
while (!isNaN(tempIn)==true)
{
    alert("Please enter a numeric value");
    $("tempIn").focus();
}

Глядя на этот маленький кусочек кода из «Этапа 2», я уже могу вспомнить ряд ошибок.Конечно, я не уверен, так как я еще не видел ваш HTML, но он выглядит так:

  1. Вы поместили значение ввода в переменную с именем userTemp, и все же выпроверка переменной с именем "tempIn" для проверки.Второй, вероятно, не существует в данный момент."tempIn" было именем вашего элемента DOM, а не переменной JS, которой вы присвоили его значение. Вы должны проверить переменную userTemp.
  2. При проверке вы проверяете противоположность isNaN.NaN означает «не число», поэтому противоположностью этому будет число, поэтому утверждение неверно.Не говоря уже о том, что в этом случае вам не нужно явно выражать «== true», вы можете проверить так: while(isNaN(userTemp))
  3. Если вы хотите выполнить итерацию оператора while длядо тех пор, пока вы не получите действительный номер, вам нужно поместить переменную в оператора while, поскольку вам нужно будет пытаться присвоить новый номер каждый раз, когда цикл проверки повторяется.

РЕДАКТИРОВАТЬ 2 - закончено

Ваш код здесь:

https://codepen.io/bradib0y/pen/OBEdvp?editors=1010

Обратите внимание, что если вы проходите курси это была ваша оценка, вы ничего не выиграли, когда я выполняю эти задачи для вас.Вы только выиграете, пройдя эти испытания самостоятельно.

Я предлагаю потратить не менее 1 часа на пошаговый анализ этого кода и попытаться воспроизвести его в аналогичном проекте.Если у вас все еще есть проблемы с пониманием, сделайте себе одолжение и начните заново с базового JavaScript.Вы будете экспертом по этому вопросу в течение недели, если правильно изложите основы.Но если вы все еще не можете понять основы и продолжать продвигаться вперед с более сложными проблемами, вам будет трудно.

...