Выполнить функцию со значением текущей выбранной опции - PullRequest
0 голосов
/ 25 февраля 2012

Даже если я выбрал параметры, он все равно выдает сообщение «Пожалуйста, выберите что-нибудь». Я получил это, работая только с одним выпадающим списком, но у меня есть проблемы, когда их два или более.

(В рабочем примере переменная sport - это document.getElementById ("sports") и только один раскрывающийся список)

В чем проблема?

<script type="text/javascript">   
function check() {
    sport = document.getElementsByClassName("sports");
    sport_selected = sport.selectedIndex; 
    weight = document.getElementById("weight").value;
    time = document.getElementById("time").value;
    if (sport_selected > 0) {
        if (isNaN(weight, time)) {
        alert("Error. This is not a number.");
        }
        else { 
        met = sport.options[sport_selected].value;
        calculations = (time * ((met * 3.5 * weight)/200));  
        result = Math.round(calculations);
        document.lastform.output.value = result + " kcal";
        }
    }
    else {
        alert("Please choose something.")
    } 
});
</script> 
<div id="tabs">     
<ul>
    <li><a href="#tabs-1">Running</a></li>
    <li><a href="#tabs-2">Walking</a></li>  
</ul>                   
<div id="tabs-1">
<form name="form1">
    <select class="sports">
        <option value="">-Choose-</option>
        <option value="6">Jog/walk combination</option>
        <option value="7">Jogging, general</option>
        <option value="8">Running, 5 mph (12 min/miile)</option>
        <option value="9">Running, 5.2 mph (11.5 min/mile)</option>
        <option value="10">Running, 6 mph (10 min/mile)</option>
  </select>
</form>
</div>
<div id="tabs-2">
<form name="form2">
    <select class="sports">
        <option value="">-Choose-</option>
        <option value="2">Walking, general</option>
        <option value="2">Walking, 1 mph</option>
  </select>
</form>
</div>
</div>  
<form name="lastform">
<label for="weight">Weight [kg]:</label><br />
<input type="text" size="3" id="weight"><br />   
<label for="time">Duration [min]:</label><br />
<input type="text" size="3" id="time">
<input type="button" value="Calc" onClick="check()"><br /><br />
<label for="kcal">You have burned:</label><br />
<input type="text" id="output">
</form>

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

getElementsByClassName возвращает коллекцию, а не только один элемент, вам нужно написать код для итерации коллекции, если у вас есть больше элементов управления.пожалуйста, проверьте: https://developer.mozilla.org/en/DOM/document.getElementsByClassName

0 голосов
/ 25 февраля 2012

А как насчет использования jQuery, поскольку вы использовали TAG?

HTML

<div id="tabs">     
<ul>
    <li><a href="#tabs-1">Running</a></li>
    <li><a href="#tabs-2">Walking</a></li>  
</ul>                   
<div id="tabs-1">
<form name="form1">
    <select class="sports">
        <option value="">-Choose-</option>
        <option value="6">Jog/walk combination</option>
        <option value="7">Jogging, general</option>
        <option value="8">Running, 5 mph (12 min/miile)</option>
        <option value="9">Running, 5.2 mph (11.5 min/mile)</option>
        <option value="10">Running, 6 mph (10 min/mile)</option>
  </select>
</form>
</div>
<div id="tabs-2">
<form name="form2">
    <select class="sports">
        <option value="">-Choose-</option>
        <option value="2">Walking, general</option>
        <option value="2">Walking, 1 mph</option>
  </select>
</form>
</div>
</div>  
<form name="lastform">
<label for="weight">Weight [kg]:</label><br />
<input type="text" size="3" id="weight"><br />   
<label for="time">Duration [min]:</label><br />
<input type="text" size="3" id="time">
<input type="button" value="Calc" id="check"><br /><br />
<label for="kcal">You have burned:</label><br />
<input id="result" type="text" id="output">
</form>

Javascript

$("#check").click(function() {

    var sport_selected = $(".sports option:selected").val();
    var weight = $("#weight").val();
    time = $("#time").val();
    if (parseInt(sport_selected) > 0) {
        if (isNaN(weight, time)) {
            alert("Error. This is not a number.");
        }
        else {
            var met = sport_selected
            calculations = (time * ((met * 3.5 * weight) / 200));
            result = Math.round(calculations);
            $("#result").val(result + " kcal");
        }
    }
    else {
        alert("Please choose something.")
    }
});​

а это скрипка .

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