Javascript 在函数中访问 DOM 元素

标签 javascript html

我必须修复一个程序来计算一群人参加某次旅行的总费用。共有三个旅游项目,每个项目都有 child 和成人的单独费用。我相信我已经编写了正确的 java 和 html 来执行此操作,尽管它似乎不起作用。 JavaScript:

function calculateTotal (){
"use strict";
var adults = document.tour.adults.value;
var children = document.tour.children.value;
var costAdults = [180,120,80];    //stored prices for adults for each tour in an array
var costChildren = [155,120,70];
var tour = document.tour.tours.value;  //isnt used
var cost = 0;


if (document.tour.tours.options[0].selected) {  
//if option 0 (All Day Dreamer) is selected, then cost = cost of adult [0]*number of adults + cost of children [0]*number of children
cost = costAdults[0]*adults + costChildren[0]*children;
}
if (document.tour.tours.options[1].selected) {
cost = costAdults[1]*adults + costChildren[1]*children;
}
if (document.tour.tours.options[2].selected) {
cost = costAdults[2]*adults + costChildren[2]*children;
}
document.getElementById("cost").innerHTML = "Cost is" + cost;
}

HTML:

<title>Captain Joes Tours</title>
<script src="Captain Joes Tours.js" type="text/javascript"></script>
</head>
<body>
<form id="tour">
Adults:
<select name="adults">
<option name="1" value="1">1</option>
<option name="2" value="2">2</option>
<option name="3" value="3">3</option>
<option name="4" value="4">4</option>
</select>
<br>
Children:
<select name="children">
<option name="1" value="1">1</option>
<option name="2" value="2">2</option>
<option name="3" value="3">3</option>
<option name="4" value="4">4</option>
</select>
<br>
Tour:
<select name="tours">
<option name="All Day Dreamer">All Day Dreamer</option>
<option name="Half-Day Safari">Half-Day Safari</option>
<option name="2-Hour Adventure">2-Hour Adventure</option>
</select>
<input id = "submit" type = "button" value = "Submit" onclick =  "calculateTotal();">
</form>
<div id="price">
<p id="cost">Cost:</p>
</div>
</body>

成人和 child 的数量可以是1到4。选择的值与javascript中的varadults和varchildren相同。 如果选择“All Day Dreamer”旅游 [0],则可以通过将成人人数乘以 costAdults 数组中的 [0] 变量并将其添加到 child 的当量来计算成本。对于具有相应变量的其他游览可以完成相同的过程。

The page looks like this, yes very basic I will fix it later

问题是,提交按钮不显示任何费用。这是一个非常简单的程序,而且我没有 JavaScript 经验,所以我找不到问题所在。

非常感谢您的帮助。

最佳答案

var adults = 1;
    var children = 1;
    var costAdults = [180,120,80];    //stored prices for adults for each tour in an array
    var costChildren = [155,120,70];
    var tour = "All Day Dreamer";  //isnt used
    var cost = 0;
    
    function myFunctionAdult(sel)
        {
            adults = parseInt(sel.options[sel.selectedIndex].text);
        }
        
    function myFunctionChildren(sel)
        {
            children = parseInt(sel.options[sel.selectedIndex].text);
        }
        
    function myFunctionDreamer(sel)
        {
            tour = sel.options[sel.selectedIndex].text;
        }

    
function calculateTotal (){
    
    
    if (tour === "All Day Dreamer") {  
    //if option 0 (All Day Dreamer) is selected, then cost = cost of adult [0]*number of adults + cost of children [0]*number of children
    cost = costAdults[0]*adults + costChildren[0]*children;
    }
    if (tour === "Half-Day Safari") {
    cost = costAdults[1]*adults + costChildren[1]*children;
    }
    if (tour === "2-Hour Adventure") {
    cost = costAdults[2]*adults + costChildren[2]*children;
    }
    document.getElementById("cost").innerHTML = "Cost is: " + cost;
    }
    <title>Captain Joes Tours</title>
    <script src="Captain Joes Tours.js" type="text/javascript"></script>
    </head>

    <body>
      <form id="tour">
        Adults:
        <select name="adults" id="adults" onChange="myFunctionAdult(this);">
    <option name="1" value="1">1</option>
    <option name="2" value="2">2</option>
    <option name="3" value="3">3</option>
    <option name="4" value="4">4</option>
    </select>
        <br> Children:
        <select name="children" onChange="myFunctionChildren(this)">
    <option name="1" value="1">1</option>
    <option name="2" value="2">2</option>
    <option name="3" value="3">3</option>
    <option name="4" value="4">4</option>
    </select>
        <br> Tour:
        <select name="tours" onChange="myFunctionDreamer(this)">
    <option name="All Day Dreamer">All Day Dreamer</option>
    <option name="Half-Day Safari">Half-Day Safari</option>
    <option name="2-Hour Adventure">2-Hour Adventure</option>
    </select>
        <input id="submit" type="button" value="Submit" onclick="calculateTotal();">
      </form>
      <div id="price">
        <p id="cost">Cost:</p>
      </div>
    </body>

关于Javascript 在函数中访问 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46924046/

相关文章:

javascript - js中的每个实例都不会更新原型(prototype)值,为什么?

javascript - 如何在 Mongoose 发布更新中间件期间访问更新的文档?

javascript - 我如何在 ReactJS 中对组件进行分组

javascript - 在用户输入此文本并点击提交后,如何显示带有文本的新 div?

html - Spring thymeleaf 的 html 图像不会显示

html - 在 Safari 中隐藏/错放

html - 伪元素停止事件点击

javascript - 日本数字正则表达式

javascript - 使用 Node GitHub API 在本地克隆远程仓库

javascript - 在文本框中加载字体