addeventlistener更改未触发事件

kd3sttzy  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(397)

我遇到了一个问题,代码在JSFIDLE中运行良好,但当重新定位到实际工作区时,它不工作。已经放置了js库
问题是,监听器不是由jquery事件触发的。下面是一些简单的代码来说明这个问题。请注意,问题来自addeventlistener或代码语法。我需要对当前代码进行任何更改吗?
非常感谢您的帮助!。
js

  1. const length_field = document.querySelector('#unitlength');
  2. const width_field = document.querySelector('#unitwidth');
  3. const area_field = document.querySelector('#unitarea');
  4. const unit_field = document.querySelector('#unitmeasure');
  5. length_field.addEventListener('change', function(e) {
  6. // using condition
  7. if (this.value === "feet") {
  8. area_field.value = "feet";
  9. width_field.value = "feet";
  10. unit_field.value = "imperial";
  11. } else if (this.value === "meter") {
  12. area_field.value = "meter";
  13. width_field.value = "meter";
  14. unit_field.value = "metric";
  15. } else {
  16. // do nothing by default
  17. }
  18. });
  19. width_field.addEventListener('change', function(e) {
  20. // using condition
  21. if (this.value === "feet") {
  22. area_field.value = "feet";
  23. length_field.value = "feet";
  24. unit_field.value = "imperial";
  25. } else if (this.value === "meter") {
  26. area_field.value = "meter";
  27. length_field.value = "meter";
  28. unit_field.value = "metric";
  29. } else {
  30. // do nothing by default
  31. }
  32. });
  33. area_field.addEventListener('change', function(e) {
  34. // using condition
  35. if (this.value === "feet") {
  36. length_field.value = "feet";
  37. width_field.value = "feet";
  38. unit_field.value = "imperial";
  39. } else if (this.value === "meter") {
  40. length_field.value = "meter";
  41. width_field.value = "meter";
  42. unit_field.value = "metric";
  43. } else {
  44. // do nothing by default
  45. }
  46. });
  47. unit_field.addEventListener('change', function(e) {
  48. // using condition
  49. if (this.value === "feet") {
  50. length_field.value = "feet";
  51. width_field.value = "feet";
  52. unit_field.value = "imperial";
  53. } else if (this.value === "meter") {
  54. length_field.value = "meter";
  55. width_field.value = "meter";
  56. unit_field.value = "metric";
  57. } else {
  58. // do nothing by default
  59. }
  60. });
  1. <head>
  2. <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
  3. </head>
  4. <label for="unitlength">Length </label>
  5. <select id="unitlength" name="unitlength">
  6. <option value="" selected="selected">--Unit--</option>
  7. <option value="feet">feet</option>
  8. <option value="meter">meter</option>
  9. </select>
  10. <label for="unitwidth">Width </label>
  11. <select id="unitwidth" name="unitwidth">
  12. <option value="" selected="selected">--Unit--</option>
  13. <option value="feet">feet</option>
  14. <option value="meter">meter</option>
  15. </select>
  16. <label for="unitarea">Area </label>
  17. <select id="unitarea" name="unitarea">
  18. <option value="" selected="selected">--Unit--</option>
  19. <option value="feet">sqft.</option>
  20. <option value="meter">m2</option>
  21. </select>
  22. <label for="unitmeasure"> Unit</label>
  23. <select class="list-dt" id="unitmeasure" name="unitmeasure">
  24. <option value="" selected="selected" disabled> -Unit-</option>
  25. <option value="imperial" disabled>imperial</option>
  26. <option value="metric" disabled>metric</option>
  27. </select>
2j4z5cfb

2j4z5cfb1#

我已将代码更新如下:
注意:检查javascript代码的位置。

  1. <html>
  2. <style>
  3. </style>
  4. <body>
  5. <head>
  6. <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  7. </head>
  8. <label for="unitlength">Length </label>
  9. <select id="unitlength" name="unitlength">
  10. <option value="" selected="selected">--Unit--</option>
  11. <option value="feet">feet</option>
  12. <option value="meter">meter</option>
  13. </select>
  14. <label for="unitwidth">Width </label>
  15. <select id="unitwidth" name="unitwidth">
  16. <option value="" selected="selected">--Unit--</option>
  17. <option value="feet">feet</option>
  18. <option value="meter">meter</option>
  19. </select>
  20. <label for="unitarea">Area </label>
  21. <select id="unitarea" name="unitarea">
  22. <option value="" selected="selected">--Unit--</option>
  23. <option value="feet">sqft.</option>
  24. <option value="meter">m2</option>
  25. </select>
  26. <label for="unitmeasure"> Unit</label>
  27. <select class="list-dt" id="unitmeasure" name="unitmeasure">
  28. <option value="" selected="selected" disabled> -Unit-</option>
  29. <option value="imperial" disabled>imperial</option>
  30. <option value="metric" disabled>metric</option>
  31. </select>
  32. <script>
  33. const length_field = document.querySelector('#unitlength');
  34. const width_field = document.querySelector('#unitwidth');
  35. const area_field = document.querySelector('#unitarea');
  36. const unit_field = document.querySelector('#unitmeasure');
  37. length_field.addEventListener('change', function(e) {
  38. // using condition
  39. if (this.value === "feet") {
  40. area_field.value = "feet";
  41. width_field.value = "feet";
  42. unit_field.value = "imperial";
  43. } else if (this.value === "meter") {
  44. area_field.value = "meter";
  45. width_field.value = "meter";
  46. unit_field.value = "metric";
  47. } else {
  48. // do nothing by default
  49. }
  50. });
  51. width_field.addEventListener('change', function(e) {
  52. // using condition
  53. if (this.value === "feet") {
  54. area_field.value = "feet";
  55. length_field.value = "feet";
  56. unit_field.value = "imperial";
  57. } else if (this.value === "meter") {
  58. area_field.value = "meter";
  59. length_field.value = "meter";
  60. unit_field.value = "metric";
  61. } else {
  62. // do nothing by default
  63. }
  64. });
  65. area_field.addEventListener('change', function(e) {
  66. // using condition
  67. if (this.value === "feet") {
  68. length_field.value = "feet";
  69. width_field.value = "feet";
  70. unit_field.value = "imperial";
  71. } else if (this.value === "meter") {
  72. length_field.value = "meter";
  73. width_field.value = "meter";
  74. unit_field.value = "metric";
  75. } else {
  76. // do nothing by default
  77. }
  78. });
  79. unit_field.addEventListener('change', function(e) {
  80. // using condition
  81. if (this.value === "feet") {
  82. length_field.value = "feet";
  83. width_field.value = "feet";
  84. unit_field.value = "imperial";
  85. } else if (this.value === "meter") {
  86. length_field.value = "meter";
  87. width_field.value = "meter";
  88. unit_field.value = "metric";
  89. } else {
  90. // do nothing by default
  91. }
  92. });
  93. </script>
  94. </body>
展开查看全部
cygmwpex

cygmwpex2#

如果您使用jquery,为什么不使用它的api进行事件处理?

  1. $(document).ready(function () {
  2. const length_field = $("#unitlength");
  3. // other variables here
  4. length_field.on('change', function () {});
  5. // other jQuery code here
  6. });

您可以使用所有元素和事件处理程序执行此操作。

相关问题