【问题标题】:Summarize values of selected radio buttons in javascript总结javascript中选定单选按钮的值
【发布时间】:2020-10-01 09:26:32
【问题描述】:

我有一个带有三组单选按钮的 html 表单,selectorselector2selector3。我正在尝试添加所选单选按钮的值,但这失败了。如何在下面的alert 中添加所有值?为什么它不起作用?我尝试了不同的方式,但我可以添加值,只需在控制台中获取它们即可。

<script>
const form = document.querySelector('form');
form.addEventListener('submit', obtenerTotal);

function obtenerTotal(event) {
    event.preventDefault();

    const formData = new FormData(event.target);

    const selector = parseInt(formData.get('selector') || '0', 10);
    const selector2 = parseInt(formData.get('selector2') || '0', 10);
    const selector3 = parseInt(formData.get('selector3') || '0', 10);

    const result = selector + selector2 + selector3;
    alert("the value is:" + result);
}
</script>

我的表格:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500&display=swap" rel="stylesheet">
    <title>Ob Calculator</title>
    <script src="main.js"></script>
</head>
<body>
    <div class="alert">
        <h2>Hey! Read Me...</h2>
        <p></p>
    </div>


  <div class="container">
        <form>              
                <h2>Ocular</h2>
                
            <ul>
                <li>
                    <input type="radio" id="a-option" class="radi" name="selector" value="4">
                    <label for="a-option">Espontanea</label>
                    
                    <div class="check"></div>
                </li>
                
                <li>
                    <input type="radio" id="b-option" class="radi" name="selector" value="3">
                    <label for="b-option">Orden Verbal</label>
                    
                    <div class="check"><div class="inside"></div></div>
                </li>
                
                <li>
                    <input type="radio" id="c-option" class="radi" name="selector" value="2">
                    <label for="c-option">Dolor</label>
                    
                    <div class="check"><div class="inside"></div></div>
                </li>
                        
                        <li>
                    <input type="radio" id="d-option" class="radi" name="selector" value="1">
                    <label for="d-option"><a href="#verbal">No Responde</a></label>
                    
                    <div class="check"><div class="inside"></div></div>
                </li>

            </ul>
            </div>
            <div class="container">
                
                <h2 id="verbal">Verbal</h2>
                
            <ul>
                    <li>
                        <input type="radio" id="e-option" name="selector2" value="5" >
                        <label for="e-option">Orientado y conversando</label>
                        
                        <div class="check"></div>
                    </li>
                    
                    <li>
                        <input type="radio" id="f-option" class="radi" name="selector2" value="4" >
                        <label for="f-option">Desorientado y hablando</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
                    
                    <li>
                        <input type="radio" id="h-option" class="radi" name="selector2" value="3" >
                        <label for="h-option">Palabras inapropiadas</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
                            
                            <li>
                        <input type="radio" id="i-option" class="radi" name="selector2" value="2" >
                        <label for="i-option">Sonidos Incomprensibles</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>

                    <li>
                        <input type="radio" id="j-option" class="radi" name="selector2" value="1" >
                        <label for="j-option">Ninguna respuesta</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>

            </ul>
            </div>
            <div class="container">
                
                <h2 id="verbal">Motora</h2>
                
            <ul>
                    <li>
                        <input type="radio" id="k-option" class="radi" name="selector3" value="6" >
                        <label for="k-option">Orden verbal obedece</label>
                        
                        <div class="check"></div>
                    </li>
                    
                    <li>
                        <input type="radio" id="l-option" class="radi" name="selector3" value="5" >
                        <label for="l-option">Localiza el dolor</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
                    
                    <li>
                        <input type="radio" id="m-option" class="radi" name="selector3" value="4" >
                        <label for="m-option">Retirada y flexion</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
                            
                            <li>
                        <input type="radio" id="o-option" class="radi" name="selector3" value="3" >
                        <label for="o-option">Flexion Anormal</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>

                    <li>
                        <input type="radio" id="p-option" name="selector3" value="2" >
                        <label for="p-option">Extension</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>

                    <li>
                        <input type="radio" id="r-option" class="radi" name="selector3" value="1" >
                        <label for="r-option">Ninguna respuesta</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>

            </ul>
            <button>Obtener TOTAL</button>
        </form>
    </div>

    <div class="signature">

      
        <p></a></p>
    </div>
    <script><!-- javascript from above... --></script>
</body>
</html>



【问题讨论】:

  • 欢迎来到 Stack Overflow!您能否编辑您的问题并提供一个示例来说明您期望的结果以及您实际得到的结果?类似于:“如果我选择选择器值 5、选择器 2 值 4 和选择器 3 值 3,我希望结果为 12。但我得到的结果是 Nnnnn”
  • 抱歉,我是新手。但你是对的。我必须对这个问题更加具体。

标签: javascript forms radio-button


【解决方案1】:

您只需要在第 143 行的按钮标签上添加 type="submit"。

<button type="submit">Obtener TOTAL</button>

下面的沙盒:

https://codesandbox.io/s/festive-mclaren-bbxv4?fontsize=14&hidenavigation=1&theme=dark

【讨论】:

    【解决方案2】:

    你的意思是这样的吗?

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="style.css">
        <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500&display=swap" rel="stylesheet">
        <title>Ob Calculator</title>
        <script src="main.js"></script>
    </head>
    <body>
        <div class="alert">
            <h2>Hey! Read Me...</h2>
            <p></p>
        </div>
    
    
      <div class="container">
            <form>              
                    <h2>Ocular</h2>
                    
                <ul>
                    <li>
                        <input type="radio" id="a-option" class="radi" name="selector" value="4">
                        <label for="a-option">Espontanea</label>
                        
                        <div class="check"></div>
                    </li>
                    
                    <li>
                        <input type="radio" id="b-option" class="radi" name="selector" value="3">
                        <label for="b-option">Orden Verbal</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
                    
                    <li>
                        <input type="radio" id="c-option" class="radi" name="selector" value="2">
                        <label for="c-option">Dolor</label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
                            
                            <li>
                        <input type="radio" id="d-option" class="radi" name="selector" value="1">
                        <label for="d-option"><a href="#verbal">No Responde</a></label>
                        
                        <div class="check"><div class="inside"></div></div>
                    </li>
    
                </ul>
                </div>
                <div class="container">
                    
                    <h2 id="verbal">Verbal</h2>
                    
                <ul>
                        <li>
                            <input type="radio" id="e-option" name="selector2" value="5" >
                            <label for="e-option">Orientado y conversando</label>
                            
                            <div class="check"></div>
                        </li>
                        
                        <li>
                            <input type="radio" id="f-option" class="radi" name="selector2" value="4" >
                            <label for="f-option">Desorientado y hablando</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
                        
                        <li>
                            <input type="radio" id="h-option" class="radi" name="selector2" value="3" >
                            <label for="h-option">Palabras inapropiadas</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
                                
                                <li>
                            <input type="radio" id="i-option" class="radi" name="selector2" value="2" >
                            <label for="i-option">Sonidos Incomprensibles</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
    
                        <li>
                            <input type="radio" id="j-option" class="radi" name="selector2" value="1" >
                            <label for="j-option">Ninguna respuesta</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
    
                </ul>
                </div>
                <div class="container">
                    
                    <h2 id="verbal">Motora</h2>
                    
                <ul>
                        <li>
                            <input type="radio" id="k-option" class="radi" name="selector3" value="6" >
                            <label for="k-option">Orden verbal obedece</label>
                            
                            <div class="check"></div>
                        </li>
                        
                        <li>
                            <input type="radio" id="l-option" class="radi" name="selector3" value="5" >
                            <label for="l-option">Localiza el dolor</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
                        
                        <li>
                            <input type="radio" id="m-option" class="radi" name="selector3" value="4" >
                            <label for="m-option">Retirada y flexion</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
                                
                                <li>
                            <input type="radio" id="o-option" class="radi" name="selector3" value="3" >
                            <label for="o-option">Flexion Anormal</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
    
                        <li>
                            <input type="radio" id="p-option" name="selector3" value="2" >
                            <label for="p-option">Extension</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
    
                        <li>
                            <input type="radio" id="r-option" class="radi" name="selector3" value="1" >
                            <label for="r-option">Ninguna respuesta</label>
                            
                            <div class="check"><div class="inside"></div></div>
                        </li>
    
                </ul>
                <button>Obtener TOTAL</button>
            </form>
        </div>
    
        <div class="signature">
    
          
            <p></a></p>
        </div>
      <script>
    const form = document.querySelector('form');
    
    form.addEventListener('submit', obtenerTotal);
    
    function obtenerTotal(event) {
        event.preventDefault();
    
        const formData = new FormData(event.target);
    
        const selector = parseInt(formData.get('selector') || '0', 10);
        const selector2 = parseInt(formData.get('selector2') || '0', 10);
        const selector3 = parseInt(formData.get('selector3') || '0', 10);
    
        const result = selector + selector2 + selector3;
        alert(`Ocular: ${selector}\nVerbal: ${selector2}\nMotora: ${selector3}\nThe value is : ` + result);
      }
      </script>
    </body>
    </html>

    【讨论】:

    • 是的,类似的东西但是当我尝试输入我的代码时不起作用。我不知道会发生什么。说:未捕获的类型错误:无法在 main.js:3 处读取 null 的属性“addEventListener”:未捕获的语法错误:标识符“表单”已被声明
    • 是的,当我将 JavaScript 代码放入 Visual Studio Code 并运行页面时,控制台会显示两个错误:main.js:3 Uncaught TypeError: Cannot read property 'addEventListener' of null at main。 js:3 和 Uncaught SyntaxError: Identifier 'form' has been declared glasgow.html?selector=3&selector2=4&selector3=4:11
    • Cannot read property 'addEventListener' of null at main.js:3 表示form.addEventListener 无法运行,因为formnull。当脚本块第一行的document.querySelector('form') 返回 null 时会发生这种情况,因为它在文档中找不到表单元素。这看起来很奇怪,因为您显然有一个表单元素。但是,我猜这与未捕获的SyntaxError: Identifier 'form' has already been declared 有关。这是由另一个 const 形式 = 先前引起的。您是否检查过您是否不小心将脚本块包含了两次?
    猜你喜欢
    • 2012-06-21
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2017-01-05
    • 2021-12-29
    • 2013-07-23
    相关资源
    最近更新 更多