如何用普通 Javascript 替换 jQuery change 和 val 方法

How to replace jQuery change and val methods with plain Javascript

购物车包含 jQuery 代码以附加事件处理程序并在外部小部件中设置值:

$(function () { 
  $("#smartpost_select0" ).change(function() {
    var valik = $('#smartpost_select0').val();
    $('.js-transportselect-radio').prop("checked", false);
    if (valik==='-') {
      $('#Field1').val('');
      } else {
      $('#Field1').val('SMARTPOST'+valik);
      $('#Field2').val('SMARTPOST');

   };
    
  });

  });

smartpost_select0 由外部小部件通过外部 Javascript 文件创建。 Field1Field2 是由应用程序创建的输入类型=文本字段。 .js-transportselect-radio class 字段由应用程序创建。

如何更改此代码以删除 jQuery 依赖项?是否有本地方法来附加更改处理程序和切换检查 属性?

addEventListener()on() 的原生等价物。 checkedvalue 是 Element 对象的属性,因此不需要 jQuery 的 attr()prop() 等方法。同样,querySelector()querySelectorAll() 允许您使用 CSS 样式的选择器检索 DOM 元素。

document.addEventListener('DOMContentLoaded', () => {
  let field1 = document.querySelector('#Field1');
  let field2 = document.querySelector('#Field2');

  document.querySelector('#smartpost_select0').addEventListener('change', e => {
    document.querySelectorAll('.js-transportselect-radio').forEach(el => el.checked = false);
    
    let valik = e.target.value;
    if (valik === '-') {
      field1.value = '';
    } else {
      field1.value = 'SMARTPOST' + valik;
      field2.value = 'SMARTPOST';
    }
  });
}); 

为了将来参考,站点 http://youmightnotneedjquery.com 提供了将 jQuery 方法转换为本机 JS 的有用参考。