Оценка анкеты на основе оценки пользователя - PullRequest
0 голосов
/ 20 мая 2018

Я полный нуб, так что извините за ошибки.Я пытаюсь создать сценарий, который возвращает новый балл для пользователя B на основе балла пользователя A в зависимости от результатов 5-балльной анкеты Лайкерта.Оба они вначале вводятся в верхней части страницы, затем ниже указывается вопросник, который меняет оценку пользователя B.Это должно работать следующим образом:

Во-первых:
Оценка пользователя A = x
Оценка пользователя B = y
Она округляет оценку пользователя A до 50, а затем делит ее на 50, чтобы создатьчисло, которое мы назовем z.
Например, пользователь A балл = 442, округляется до 450, затем делится на 50 = 9. Это новое число - z.или z = x / 50 (до ближайшего целого числа).Теперь, основываясь на ответах на опрос, если пользователь A нажимает «очень плохо», он берет входные данные для оценки пользователя B и вычитает из нее z.Затем дает новый результат ниже, основанный на результате анкеты после подачи, такой что:

Очень плохо = yz
Плохо = y (не меняет счет)
Удовлетворительно = y + z
Хорошо = y + z + 1
Очень хорошо = y + z + 2

Дайте мне знать, если это имеет смысл.Я приложил пример кода, который я попытался сделать ниже, но я уверен, что это неправильно.Нужно сделать больше, чем это, но это тот самый минимум, который я хочу выяснить.Спасибо

 <!DOCTYPE html>
    <html>
        <head>

    </head>
    <body>

    <h1>
        Questionnaire mess around
    </h1>
    <p>

        <label for='ascore' class="inlinelabel">User A Score</label>
        <input id="ascore" type="number"> <br>
        <br>
        <label for='bscore' class="inlinelabel">User B Score</label>
        <input id="bscore" type="number">

        </p>


    <form action="" id="scorecalc" onsubmit="return false;">
       <fieldset>


        <br>
        <legend>Peer Review Questionnaire!</legend>
        <h3> Based on your recent project together, how would you rate User B in the following Skills</h3>

            <hr>
        <label ><strong>Time Management</strong></label> 
        <br>
        <br>
        <input type="radio"  name="tmscore" value="tmvpoor" />
        Very Poor
        <input type="radio"  name="tmscore" value="tmpoor"/>
        Poor
        <input type="radio"  name="tmscore" value="tmsat" />
        Satisfactory
        <input type="radio"  name="tmscore" value="tmgood"/>
        Good
        <input type="radio"  name="tmscore" value="tmvgood" />
        Very Good

        <br>

       <button onclick="myFunction()" class="button">Submit</button>


        </fieldset>
    </form>

    <h2>

    User B New Score </h2>

    <p id="result"></p>

    <script> 
    var theForm = document.forms["scorecalc"];
    var x = document.getElementByID(ascore).value
    var y = document.getElementByID(bscore).value

    function closest50(x) {
      return Math.round(x/ 50) * 50
    }

    var z = closest50(x)

    var tm_result = new Array();
    tm_result["tmvpoor"]=y-z;
    tm_result["tmpoor"]=y;
    tm_result["tmsat"]=y+z;
    tm_result["tmgood"]=y+z+1;
    tm_result["tmvgood"]=y+z+2

    function myFunction() {
        document.getElementById("result").innerHTML = tm_result;
    }
    </script>
    </body>

1 Ответ

0 голосов
/ 20 мая 2018

В вашем коде много проблем

  • вещи, которые должны быть внутри функции, не
  • вы на самом деле не хотите массив, но объект для хранения пар ключ / значение
  • значение полей ввода всегда является строкой, вам нужно преобразовать его в число перед выполнением математических операций с ним
  • document.getElementByID - это не та функция, которую вы хотите ... ById
  • вы сказали, что хотите разделитьx на 50, но вы немедленно умножаете его на 50 обратно к исходному
  • ascore и bscore в вашем документе. getElementById должен быть строками
  • вы хотите передать строку в .innerHTML, а не массив / объект

Вот рабочий код.Если у вас есть вопросы по этому поводу, оставьте комментарий ниже (я изменил только часть JS).

const theForm = document.querySelector('#scorecalc');

function closest50(x) {
 return Math.round(x / 50);
}

function myFunction() {
   const x = Number(document.getElementById('ascore').value);
   const y = Number(document.getElementById('bscore').value);
   const choice = document.querySelector('input[type=radio]:checked').value;
   const z = closest50(x)

   const tm_result = {
     tmvpoor: y - z,
     tmpoor: y,
     tmsat: y + z,
     tmgood: y + z + 1,
     tmvgood: y + z + 2
   };

   document.getElementById("result").innerHTML = tm_result[choice];
}
    <h1>
        Questionnaire mess around
    </h1>
    <p>

        <label for='ascore' class="inlinelabel">User A Score</label>
        <input id="ascore" type="number"> <br>
        <br>
        <label for='bscore' class="inlinelabel">User B Score</label>
        <input id="bscore" type="number">

        </p>


    <form action="" id="scorecalc" onsubmit="return false;">
       <fieldset>


        <br>
        <legend>Peer Review Questionnaire!</legend>
        <h3> Based on your recent project together, how would you rate User B in the following Skills</h3>

            <hr>
        <label ><strong>Time Management</strong></label>
        <br>
        <br>
        <input type="radio"  name="tmscore" value="tmvpoor" />
        Very Poor
        <input type="radio"  name="tmscore" value="tmpoor"/>
        Poor
        <input type="radio"  name="tmscore" value="tmsat" />
        Satisfactory
        <input type="radio"  name="tmscore" value="tmgood"/>
        Good
        <input type="radio"  name="tmscore" value="tmvgood" />
        Very Good

        <br>

       <button onclick="myFunction()" class="button">Submit</button>


        </fieldset>
    </form>

    <h2>User B New Score </h2>

    <p id="result"></p>
...