javascript - 当输入新值被传递时,它不会自动影响#np 和#total_amount,直到我刷新网页

标签 javascript

当我在选择选项(从字符串更改为值)后更改输入值 (id=input") 时,它不会在#np 和#total_amount 中自动刷新

function myFunction() {
  var x = document.getElementById("work").value;
  console.log(x);
  if (document.getElementById("work").value == "article") {
    var w = 5;
    if (document.getElementById("input")) {
      // renamed x to z 
      var z = document.getElementById("input").value;
      var wc = w * z;
      // not .value but .textContent 
      document.getElementById("total_amount").textContent = +wc;
      document.getElementById("np").textContent = +wc;
    }
  }
}
<div>
  <input type="number" value="0" id="input" name="word_count" value="500" style="text-align: center;" />
  <select id="work" onchange="myFunction();" name="work">
    <option disabled selected> -Select - </option>
    <option value="article">Article
    </option>
  </select>
</div> Total amount:
<span id="total_amount">
 </span> <br /> NP: <span id="np">
 </span>

当我从选项中选择后将新值传递给输入时,我确实希望看到#np 和#total_amount 中的结果发生变化

最佳答案

您有一个分配给 <select> 的事件处理程序元素,但不是 <input>元素。因此,当输入值发生变化时,您的函数不会被调用,您的“total_amount”和“np”值也不会更新。

您需要将事件处理程序附加到 change你的事件<input>标签。我不确定您要如何计算或计算什么,但这是我使用您的代码的意思的示例(查看我在 HTML 部分添加的评论):

function myFunction() {
  var x = document.getElementById("work").value;
  console.log(x);
  if (document.getElementById("work").value == "article") {
    var w = 5;
    if (document.getElementById("input")) {
      var z = document.getElementById("input").value;
      var wc = w * z;
      document.getElementById("total_amount").textContent = +wc;
      document.getElementById("np").textContent = +wc;
    }
  }
}
<div>
  <!-- Added onchange attribute to next line so function gets called when value changes -->
  <!-- Also removed duplicate value attribute -->
  <input type="number" onchange="myFunction()" id="input" name="word_count" value="500" style="text-align: center;" />
  <select id="work" onchange="myFunction();" name="work">
    <option disabled selected> -Select - </option>
    <option value="article">Article
    </option>
  </select>
</div> Total amount:
<span id="total_amount">
 </span> <br /> NP: <span id="np">
 </span>

关于javascript - 当输入新值被传递时,它不会自动影响#np 和#total_amount,直到我刷新网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57635315/

相关文章:

javascript - 是否有使用 JavaScript 和 JQuery 序列化 JSON 的标准方法?

javascript - Meteor/Mongo - 你如何引用查找集合? (去规范化与规范化)

javascript - 根据经度和纬度计算最近位置(来自数据库)的算法

javascript - 需要禁用 Bootstrap 时间选择器的输入

javascript - 如何在谷歌图表中绘制垂直轴

javascript - 带有动态图像的手动 JavaScript 幻灯片放映

javascript - 如何使用 AJAX 和 JSON 获取 PHP 文件返回的数据

javascript - 响应中的 Access-Control-Allow-Origin header 不能是通配符 '*' ... Socket.io、NodeJs、ReactJs

javascript - 如何像jquery中的触发器('click'一样触发knockout.js中的点击事件?

javascript - 如何在javascript中处理 '&'、 '('、 ')'