是否有一些方法,我可以运行以下:

var data = $("#dataTable").data('timer');
var diffs = [];

for(var i = 0; i + 1 < data.length; i++) {
    diffs[i] = data[i + 1] - data[i];
}

alert(diffs.join(', '));

只有在id为#dataTable的元素上有一个名为data-timer的属性时?


当前回答

我发现这种方法在动态设置数据元素时效果更好:

if ($("#myelement").data('myfield')) {
  ...
}

其他回答

这里所有的答案都使用了jQuery库。

但是普通的javascript非常简单。

如果你只想在id为#dataTable的元素也具有data-timer属性的情况下运行脚本,那么步骤如下:

// Locate the element
const myElement = document.getElementById('dataTable');

// Run conditional code
if (myElement.dataset.hasOwnProperty('timer')) {

  [... CODE HERE...]

}
if ($("#dataTable").data('timer')) {
  ...
}

注意只有当数据属性不是空字符串或“假”值(如0或false)时,才返回true。

如果你想检查data属性是否存在,即使是空的,也要这样做:

if (typeof $("#dataTable").data('timer') !== 'undefined') {
  ...
}
if (typeof $("#dataTable").data('timer') !== 'undefined')
{
    // your code here
}

你可以通过css属性选择来检查

if ($('#dataTable').is('[data-timer]')) {
   // data-timer attribute exists
}

在我看来,这是最简单的解决方案,选择所有具有特定数据属性的元素:

var data = $("#dataTable[data-timer]");
var diffs = [];

for(var i = 0; i + 1 < data.length; i++) {
    diffs[i] = data[i + 1] - data[i];
}

alert(diffs.join(', '));

下面是它如何工作的截图。