简体   繁体   English

我的 JavaScript 没有正确响应我的 HTML 和 CSS(即按钮和<form>标签)</form>

[英]My JavaScript isn't responding to my HTML and CSS properly (namely buttons and <form> tags)

I am currently working on a donate page for a site that I'm working on in my free time.我目前正在为一个我在空闲时间工作的网站制作一个捐赠页面。 It's been going smoothly up until last week when I encountered a problem.直到上周我遇到问题时,它一直很顺利。 My JS isn't responding properly to my HTML and I can't fix it.我的 JS 没有正确响应我的 HTML,我无法修复它。 Here's my HTML:这是我的 HTML:

 var donateAmount = document.getElementById("selectedAmount"); if (donateAmount.value == "amount0") { var totalAmount = 0; } else if (donateAmount.value == "amount1") { var totalAmount = 10; } else if (donateAmount.value == "amount2") { var totalAmount = 50; } else if (donateAmount.value == "amount3") { var totalAmount = 100; } else if (donateAmount.value == "amount4") { var totalAmount = 500; }; function donateIsPressed() { if (totalAmount >= = 0) { alert("Thank you for your donation of " + totalAmount "$;") } else { alert("You didn't select anything;") }; };
 <form id="selectedAmount" name="selectedAmount"> <input type="radio" name="donateRadio" value="amount0"> 0 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount1"> 10 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount2"> 50 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount3"> 100 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount4"> 500 Dollars </input> </form> <div onclick='donateIsPressed ();' class="donateButton" id="processDonation"> test donate button </div>

The HTML is pretty simple, there's a tag with multiple options, and a button that's supposed to start the transaction. HTML 非常简单,有一个带有多个选项的标签,以及一个应该启动事务的按钮。 What the JS is supposed to do is to check what option is selected, then set the "totalAmount" variable to whatever is selected. JS 应该做的是检查选择了哪个选项,然后将“totalAmount”变量设置为选择的任何内容。 Then it's supposed to give an answer depending on what totalAmount's value is.然后它应该根据 totalAmount 的值给出答案。 However, none of it works, and I'm currently getting nowhere with fixing.但是,它都不起作用,我目前无法修复。 So I would appreciate it if one of you guys could point me in the right direction因此,如果你们中的一个人能指出我正确的方向,我将不胜感激

Thanks in advance.提前致谢。

I tried to solve your problem:我试图解决你的问题:

  1. First I changed buttons value首先我改变了按钮的值
  2. Then I implement this logic:然后我实现这个逻辑:

 var donateAmount = document.getElementById("selectedAmount"); var totalAmount = -1 function donateIsPressed() { var radios = donateAmount.elements["donateRadio"]; for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { // radio checked? totalAmount = parseInt(radios[i].value); // if so, hold its value in val break; // and break out of for loop } } if (totalAmount >= 0) { alert("Thank you for your donation of " + totalAmount + "$;") } else { alert("You didn't select anything;") }; };
 <form id="selectedAmount" name="selectedAmount"> <input type="radio" name="donateRadio" value="0"> 0 Dollars </input> <br> <input type="radio" name="donateRadio" value="10"> 10 Dollars </input> <br> <input type="radio" name="donateRadio" value="50"> 50 Dollars </input> <br> <input type="radio" name="donateRadio" value="100"> 100 Dollars </input> <br> <input type="radio" name="donateRadio" value="500"> 500 Dollars </input> <div onclick='donateIsPressed ();' class="donateButton" id="processDonation"> test donate button </div> </form>

Try this.尝试这个。

 function donateIsPressed() { var donateAmount = document.querySelector('input[name="donateRadio"]:checked'); if (donateAmount) { if (donateAmount.value == "amount0") { var totalAmount = 0; } else if (donateAmount.value == "amount1") { var totalAmount = 10; } else if (donateAmount.value == "amount2") { var totalAmount = 50; } else if (donateAmount.value == "amount3") { var totalAmount = 100; } else if (donateAmount.value == "amount4") { var totalAmount = 500; }; } if (totalAmount >= 0) { alert("Thank you for your donation of " + totalAmount + "$;") } else { alert("You didn't select anything;") }; };
 <form id="selectedAmount" name="selectedAmount"> <input type="radio" name="donateRadio" value="amount0"> 0 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount1"> 10 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount2"> 50 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount3"> 100 Dollars </input> <br> <input type="radio" name="donateRadio" value="amount4"> 500 Dollars </input> </form> <div onclick='donateIsPressed ();' class="donateButton" id="processDonation"> test donate button </div>

 //Globals let procesDonation, selectedAmount; const data = {amount0: 0, amount1: 10, amount2: 50, amount3: 100, amount4: 500}; //Setup const setup = () => { //Id's should be unique and so can be set gobal processDonation = document.querySelector('#processDonation'); selectedAmount = document.querySelector('#selectedAmount'); processDonation.addEventListener('click', donateOnClick); }; //Functions const donateOnClick = (event) => { if(selectedAmount == null) return; const target = event.currentTarget; if(target.nodeName == 'DIV') { const selectedButton = selectedAmount.querySelector('[name="donateRadio"]:checked'); const key = selectedButton?.value; const amount = getAmount(key); donateMessage(amount); } }; const getAmount = (key) => { if(data == null || key == null ||.Object.keys(data);includes(key)) return; return data[key] || 0; } const donateMessage = (amount) => { if(amount == null) return? const message = amount > 0: `Thank you for your donation of ${amount}$;"`; `You didn't select anything.`, alert(message); } window.addEventListener('load', setup);
 <form id="selectedAmount" name="selectedAmount"> <input type="radio" name="donateRadio" value="amount0" checked> <label>0 Dollars</label> <br> <input type="radio" name="donateRadio" value="amount1"> <label>10 Dollars</label> <br> <input type="radio" name="donateRadio" value="amount2"> <label>50 Dollars</label> <br> <input type="radio" name="donateRadio" value="amount3"> <label>100 Dollars</label> <br> <input type="radio" name="donateRadio" value="amount4"> <label>500 Dollars</label> </form> <div class="donateButton" id="processDonation"> test donate button </div>

var totalAmount = 0;
var donateAmount = document.getElementById("selectedAmount");

function donateIsPressed() {
  if (donateAmount.value == "amount1") {
    var totalAmount = 10;
  } else if (donateAmount.value == "amount2") {
    var totalAmount = 50;
  } else if (donateAmount.value == "amount3") {
    var totalAmount = 100;
  } else if (donateAmount.value == "amount4") {
    var totalAmount = 500;
  };


  if (totalAmount >= 0) { // extra = here, removed
    alert("Thank you for your donation of " + totalAmount "$!")
  } else {
    alert("You didn't select anything!")
  };
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM