JavaScript/HTML-为所选单选按钮指定值

JavaScript/HTML-为所选单选按钮指定值,javascript,html,radio-button,Javascript,Html,Radio Button,情况基本上是这样的: 我有两个问题必须回答这两个问题: 1.你抽烟吗?A.是的。不 2.你喝酒吗?是的。没有 如果用户选择a。在问题1中,则值为2 如果用户选择b。在问题1中,则值为1 如果用户选择a。在问题2中,则值为2 如果用户选择b。在问题2中,则值为1 之后,我将汇总两个问题的所选单选按钮的值并显示它 单选按钮的代码为: 你抽烟吗? 是&ensp&ensp; 不 你喝酒吗? 是&ensp&ensp; 不 我想这就是你想要的。请让我来 <!DOCTYPE html>

情况基本上是这样的:

我有两个问题必须回答这两个问题: 1.你抽烟吗?A.是的。不 2.你喝酒吗?是的。没有

如果用户选择a。在问题1中,则值为2 如果用户选择b。在问题1中,则值为1 如果用户选择a。在问题2中,则值为2 如果用户选择b。在问题2中,则值为1

之后,我将汇总两个问题的所选单选按钮的值并显示它

单选按钮的代码为:

你抽烟吗? 是&ensp&ensp; 不 你喝酒吗? 是&ensp&ensp; 不
我想这就是你想要的。请让我来

   <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <script
    src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
    <body>
        <ul>
            <li>Do you smoke cigarettes?<br>
                <input type="radio" name="smoke" id="yes1" data-vale = '2' value="Y" checked="checked">
                <label for="yes1">Yes</label> &ensp;&ensp;
                <input type="radio" name="smoke" id="no1" data-vale = '1' value="N">
                <label for="no1">No</label><br>
            </li>
            <li>Do you drink?<br>
                <input type="radio" name="drink" id="yes2" data-vale = '2' value="Y" checked="checked">
                <label for="yes2">Yes</label> &ensp;&ensp;
                <input type="radio" name="drink" id="no2" data-vale = '1' value="N">
                <label for="no2">No</label><br><br>
            </li>
        </ul>
        <input type="button" value="Get Value">
        <script type="text/javascript">
            $(document).ready(function(){
                $("input[type='button']").click(function(){
                    var radioValue = $("input[name='smoke']:checked").attr('data-vale');
                    var radioValue2 = $("input[name='drink']:checked").attr('data-vale');
                    console.log( parseInt(radioValue) +parseInt(radioValue2) )
                });

            });

            /*
            * OR if you dont want to change HTML and may be this will work for you
            *
            $(document).ready(function(){
                $("input[type='button']").click(function(){
                    var radioValue = $("input[name='smoke']:checked").val() == 'Y' ? 2 : 1;
                    var radioValue2 = $("input[name='drink']:checked").val() == 'Y' ? 2 : 1;
                    console.log( parseInt(radioValue) +parseInt(radioValue2) )
                });
            });
            */
        </script> 
    </body>
    </html>

我不确定我对你的理解是否正确,我现在也不知道你为什么想要这样的东西。但这应该行得通

<ul>
  <li>Do you smoke cigarettes?<br>
    <input type="radio" name="smoke" id="yes1" value="Y" checked="checked" onchange="yesSelected(this)">
    <label for="yes1">Yes</label> &ensp;&ensp;
    <input type="radio" name="smoke" id="no1" value="N" onchange="noSelected(this)">
    <label for="no1">No</label><br>
  </li>
  <li>Do you drink?<br>
    <input type="radio" name="drink" id="yes2" value="Y" checked="checked" onchange="yesSelected(this)">
    <label for="yes2">Yes</label> &ensp;&ensp;
    <input type="radio" name="drink" id="no2" value="N" onchange="noSelected(this)">
    <label for="no2">No</label><br><br></li>
</ul>

<script type="text/javascript">
  function yesSelected(input){
    input.value = 2
    console.log(input.value)
  }
  function noSelected(input){
    input.value = 1
    console.log(input.value)
  }
</script>

据我所知,您可以通过使用事件侦听器的脚本来满足这一点,特别是单选按钮中值的更改。 我还建议您创建一个简单的结构来捕获数据。可以实施以下措施。不要对问题使用id,而是将它们与html数据属性关联。在本例中,我们可以指定类似于数据问题=1的内容。从一开始就为输入元素指定要使用的值也更为实际。因此,不要使用value=Y,而是尝试value=2或value=1。现在我们已经设置好html,我们将使用另一个结构,这次是捕获值。我们声明了一个包含对象的数组类型的常量问题。每个对象代表一个问题,id属性是与输入上的数据问题属性关联的值。为了找到输入,我们使用document.querySelectorAllselector方法,因为两个单选按钮共享相同的属性。在我们简单地将eventlistener附加到一个处理函数之后,该函数只更新我们对该问题的答案。如果您想添加结果,可以对问题常量使用forEach方法,并将其记录到控制台,或者在您认为合适的地方显示它。希望这有帮助

`


`

让我问你,如果选择1->a和2->b。是否要显示2+1=3?这就是你想要的吗?你为什么不把value=Y换成value=2,把value=N换成value=1呢?@iNandi是的,我想要way@KubwimanaAdrien因为我的朋友正在处理她那部分的值,所以我不想打扰她的进度和任何你可以使用自定义属性的东西。有什么问题吗?是的,你也可以提醒它,并存储在一些全局变量中,用于将来。如果我有一个十进制数呢?它会像:ParseFloat吗?是的,你是对的,但我认为它是ParseFloat。请谷歌它。非常感谢你,如果我有任何疑问将通知你让我们。
<ul>
  <li>Do you smoke cigarettes?<br>
    <input type="radio" name="smoke" data-question="1" value="2" checked="checked">
    <label for="yes1">Yes</label> &ensp;&ensp;
    <input type="radio" name="smoke" data-question="1" value="1">
    <label for="no1">No</label><br>
  </li>
  <li>Do you drink?<br>
    <input type="radio" name="drink" data-question="2" value="2" checked="checked">
    <label for="yes2">Yes</label> &ensp;&ensp;
    <input type="radio" name="drink" data-question="2" value="1">
    <label for="no2">No</label><br><br></li>
</ul>

<script>
const questions = [{id:1, answer:undefined},{id:2, answer: undefined}]

for(current of questions){
    let inputs = document.querySelectorAll('[data-question="'+current.id+'"]');
  for(input of inputs){
    input.addEventListener('change',function(e){ current.answer = e.target.value})
  }
}
</script>