Javascript 获取要在警报时显示的数据值

Javascript 获取要在警报时显示的数据值,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码。我需要检索.data中的值。它显示为空白,尽管我知道当我在表单上显示它时它确实有一个值 $(“#设置”)。在('click','#senpop',函数(e){ e、 预防默认值(); $('.field validation error')。查找('span')。文本(''; $('#SensName').text($(this.data('SensName')); $('#SelectSenID').val($(this.data('sens')); //请注意,上面的代码可以很

我有以下代码。我需要检索.data中的值。它显示为空白,尽管我知道当我在表单上显示它时它确实有一个值

$(“#设置”)。在('click','#senpop',函数(e){
e、 预防默认值();
$('.field validation error')。查找('span')。文本('';
$('#SensName').text($(this.data('SensName'));
$('#SelectSenID').val($(this.data('sens'));
//请注意,上面的代码可以很好地更新上面元素的值。下面我试图让“sensname”的值显示在警报中,但显示为空白。
//我知道有一个值,因为它确实正确地显示在表单上,但无法
//在这里取回它。
var sens=$(“#senpop”);
var inf=传感器数据(“传感器名称”);
警报(inf);
$('#viewmodel').model({
背景:“静态”,
键盘:错,
秀:没错,
});
});
名称

通过以下设置,我能够在Chrome和Firefox中打印数据属性

首先-是的,最好不要使用
alert()
进行这样的调试。始终默认为
console.log()

接下来,我猜您的HTML结构更像这样:

<div id="Settings">
  Settings
  <div class="hidden-lg hidden-sm hidden-md header_mobile">Name</div>
  <div class="mobile_data">
    <a href="#" id="senpop" data-sens="@item.Sens" data-sensname="@item.SensName">@item.Name</a>
  </div>
</div>
…或者,将脚本包装在
文档中。如果出于任何原因无法将脚本添加到正文中,请准备好:

$( document ).ready(function() {
  // your js code
});
这是工作代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  </head>
  <body>
    <div id="Settings">
      Settings
      <div class="hidden-lg hidden-sm hidden-md header_mobile">Name</div>
      <div class="mobile_data">
        <a href="#" id="senpop" data-sens="@item.Sens" data-sensname="@item.SensName">@item.Name</a>
      </div>
    </div>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
  <script>
    $('#Settings').on('click', '#senpop', function(e) {
      e.preventDefault();
      console.log('#settings clicked');
      $('.field-validation-error').find('span').text('');
      $('#SensName').text($(this).data('sensname'));
      $('#SelectSenID').val($(this).data('sens'));

      // Below I am trying to get the value of sensor to show up in an alert but shows blank.
      // I know there is a value because it does show up properly on the form but not able to
      // retrieve it here.

      var sens = $("#senpop");
      var inf = sens.data("sensname");
      console.log(inf);

      $('#ViewModal').modal({
        backdrop: 'static',
        keyboard: false,
        show: true,
      });
    });
  </script>
  </body>
</html>

设置
名称
$(“#设置”)。在('click','#senpop',函数(e)上{
e、 预防默认值();
console.log('点击设置');
$('.field validation error')。查找('span')。文本('';
$('#SensName').text($(this.data('SensName'));
$('#SelectSenID').val($(this.data('sens'));
//下面我试图让传感器的值显示在警报中,但显示为空白。
//我知道有一个值,因为它确实正确地显示在表单上,但无法
//在这里取回它。
var sens=$(“#senpop”);
var inf=传感器数据(“传感器名称”);
控制台日志(inf);
$('#viewmodel').model({
背景:“静态”,
键盘:错,
秀:没错,
});
});
下面是运行此代码并单击
#senpop
的屏幕截图:


首先,不要使用
alert()
进行调试,因为它会自动强制数据类型,请改用
console.log()
。其次,你在JS的末尾缺少了一个
——这只是一个打字错误吗?检查控制台是否有错误。还要确保
#senpop
#Settings
的子项,否则事件将永远不会被捕获。您看到警报了吗?@Balmar是的警报确实会出现,但它是空白的。我知道它很好,我确实看到了表单上的值。我需要抓住我需要的东西的价值。任何帮助都将不胜感激。您确定
数据sensname
在您的HTML中有值吗?例如,
@item.senname
是否实际给出了一个值?请确定,您的文档中有多少元素带有
id=“senpop”
?第二个数据调用可能与第一个不同。JSFIDLE只是在警告正确的值:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  </head>
  <body>
    <div id="Settings">
      Settings
      <div class="hidden-lg hidden-sm hidden-md header_mobile">Name</div>
      <div class="mobile_data">
        <a href="#" id="senpop" data-sens="@item.Sens" data-sensname="@item.SensName">@item.Name</a>
      </div>
    </div>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
  <script>
    $('#Settings').on('click', '#senpop', function(e) {
      e.preventDefault();
      console.log('#settings clicked');
      $('.field-validation-error').find('span').text('');
      $('#SensName').text($(this).data('sensname'));
      $('#SelectSenID').val($(this).data('sens'));

      // Below I am trying to get the value of sensor to show up in an alert but shows blank.
      // I know there is a value because it does show up properly on the form but not able to
      // retrieve it here.

      var sens = $("#senpop");
      var inf = sens.data("sensname");
      console.log(inf);

      $('#ViewModal').modal({
        backdrop: 'static',
        keyboard: false,
        show: true,
      });
    });
  </script>
  </body>
</html>