Javascript 函数仅适用于第一个 FORM

标签 javascript

我有一个带有 JavaScript 函数的表单,用于将 SELECT 下拉值 onchange 复制到输入隐藏字段。

下面是我的代码:

function setBilling(){
    var ddl = document.getElementById("billing");
    var selectedOption = ddl.options[ddl.selectedIndex];
    var mailValue = selectedOption.getAttribute("data-bill");
    var textBox = document.getElementById("billingcycle");
    if(mailValue=="1"){
    	textBox.value = "First";
    }
    else if(mailValue=="2"){
    	textBox.value = "Second";
    }
}
<div class="box1">
<form action="" method="post">
<input type="hidden" name="billingcycle" id="billingcycle"/>
<select id="billing" onchange="setBilling()">
<option data-bill="1" value="INR:1200.00">INR:1200.00/first</option>
<option data-bill="2" value="INR:2400.00">INR:2400.00/second</option>
</select>
<input type="submit" value="Order Now">
</form>
</div>

<hr>

<div class="box2">
<form action="" method="post">
<input type="hidden" name="billingcycle" id="billingcycle"/>
<select id="billing" onchange="setBilling()">
<option data-bill="1" value="INR:1200.00">INR:1200.00/first</option>
<option data-bill="2" value="INR:2400.00">INR:2400.00/second</option>
</select>
<input type="submit" value="Order Now">
</form>
</div>

<hr>

<div class="box3">
<form action="" method="post">
<input type="hidden" name="billingcycle" id="billingcycle"/>
<select id="billing" onchange="setBilling()">
<option data-bill="1" value="INR:1200.00">INR:1200.00/first</option>
<option data-bill="2" value="INR:2400.00">INR:2400.00/second</option>
</select>
<input type="submit" value="Order Now">
</form>
</div>

<hr>

<div class="box4">
<form action="" method="post">
<input type="hidden" name="billingcycle" id="billingcycle"/>
<select id="billing" onchange="setBilling()">
<option data-bill="1" value="INR:1200.00">INR:1200.00/first</option>
<option data-bill="2" value="INR:2400.00">INR:2400.00/second</option>
</select>
<input type="submit" value="Order Now">
</form>
</div>

Javascript 函数适用于第一个 Div,但不适用于剩余的 DIV。 我尝试了所有其他 JavaScript 函数,但都不起作用。

如何在所有 div 中的 javascript 函数中执行?

最佳答案

这里的问题是您的 HTML 无效,因为它在多个元素上使用相同的 ID。

来自https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id :“id 全局属性定义了一个唯一标识符(ID),该标识符在整个文档中必须是唯一的。”

当您运行document.getElementById("billing");时,它仅返回ID为billing的第一个节点。

考虑使用不同的 ID,或使用类和 getElementsByClassNamequerySelectorAll

关于Javascript 函数仅适用于第一个 FORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49746855/

相关文章:

javascript - 使用包含逗号分隔值的变量填充下拉框

javascript - 在 ES6 中使用对象字面量中的 'this'

javascript - 如何向 console.log 添加变量?

javascript - 如何将javascript变量传递给jsp参数值

javascript - 在 Safari 扩展的启动脚本中访问设置

javascript - Odoo 8 JavaScript 中的 init、start、render_value 是什么?

java - 在 Java 中显示 HTML 并与之交互

Javascript 如何判断监听器上是否发生了 event.preventDefault

javascript - jQuery 日期选择器 : Convert select dropdown into ul

javascript - 在 Meteor 中使用持久 session