【问题标题】:Issue with data attributes not storing values数据属性不存储值的问题
【发布时间】:2018-11-27 16:38:21
【问题描述】:

我正在尝试根据单选选择记住和修改值。如果选择了 radio1,它应该读取 value1 和 value 2 的值并将它们保存为数据属性“previous-value”,然后将这些值设置为 0 或 1。如果选择了 radio2,那么 value1 应该设置为 0,并且 value2 应该设置为先前的值。但是,这并没有发生,以前的值数据似乎没有设置。我没有任何控制台错误。我想知道设置值和使用相同操作更改值是否会导致问题。

$('input[type="radio"]').click(function() {
var $value1 = $('#value1');
var $value2 = $('#value2');

if($(this).attr('id') == 'radio1') { 
  $value1.data('previousvalue', $value1.val());
  $value1.val('1');

  $value2.data('previousvalue', $value2.val());
  $value2.val('0');


} else if($(this).attr('id') == 'radio2') {      
  $value1.val('0');
  $value2.val($value2.data('previousvalue'));
}
});

【问题讨论】:

  • jsfiddle.net/nz62pgwq 您的脚本似乎在执行您编写的任务。
  • 您可能会发现attr. vs prop. 很有趣。设置 $.data() 是设置 dom 属性,而不是属性值。您可以检查元素 $.data() 的最新值,它将被更新。

标签: javascript jquery


【解决方案1】:

首先你做一个queryselectorAll 以获得所有输入类型的收音机。它返回一个节点列表。在我们用 "for" 循环它并在那个 loop 中我们做一个条件 "if" 以验证 radioButtons[i] 是否被厚脸皮。如果是这种情况,它会显示一条消息,显示selectedOne。

试试这个代码:

let radioButtons=document.querySelectorAll(input[type="radio"]); 
for(let i=0,c=radioButtons.length;i<c;i++){
    if(radioButtons[i].checked){
        alert("am the selectedOne "+radioButtons [i]);
      }
 }

【讨论】:

  • 您应该尝试解释您的答案,而不仅仅是“代码丢失”——如果您的答案确实解决了 OP 的问题......请解释如何以及为什么。
  • 好的,首先你做一个 queryselectorAll 以获得所有输入类型的收音机。它返回一个节点列表。在我们用“for”循环它并在那个循环中我们做一个条件“if”以验证radioButtons [i]是否被厚脸皮。如果是这种情况,它会显示一条消息,显示 selectedOne
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多