【问题标题】:PhpStorm: Unresolved variable readyStatePhpStorm:未解析的变量 readyState
【发布时间】:2017-07-21 07:17:31
【问题描述】:

我正在使用this code 向我的所有表格添加过滤器字段。这个过滤器是使用 JavaScript 添加到我的导航栏的。

  // Table filter.
  // Source: https://codepen.io/chriscoyier/pen/tIuBL
  (function(document) {
    'use strict';

    var LightTableFilter = (function(Arr) {

      var _input;

      function _onInputEvent(e) {
        _input = e.target;
        var tables = document.getElementsByClassName(_input.getAttribute('data-table'));
        Arr.forEach.call(tables, function(table) {
          Arr.forEach.call(table.tBodies, function(tbody) {
            Arr.forEach.call(tbody.rows, _filter);
          });
        });
      }

      function _filter(row) {
        var text = row.textContent.toLowerCase(), val = _input.value.toLowerCase();
        row.style.display = text.indexOf(val) === -1 ? 'none' : 'table-row';
      }

      return {
        init: function() {
          var inputs = document.getElementsByClassName('light-table-filter');
          Arr.forEach.call(inputs, function(input) {
            input.oninput = _onInputEvent;
          });
        }
      };
    })(Array.prototype);

    document.addEventListener('readystatechange', function() {
      if (document.readyState === 'complete') {
        LightTableFilter.init();
      }
    });

  })(document);

代码本身完美运行。

但是,PhpStorm 向 document.readyState 添加了一条警告,指出它是 unresolved variable

PhpStorm 是否缺少某些信息?我昨天下载安装了,应该是最新版本。


我通过替换以下代码来修复它:

document.addEventListener('readystatechange', function() {
  if (document.readyState === 'complete') {
    LightTableFilter.init();
  }
});

有了这个:

  document.addEventListener("DOMContentLoaded", function (event) {
      LightTableFilter.init();
  })

【问题讨论】:

  • 这是相当陈旧的代码。
  • 你有我可以使用的替代方案吗?我自己也会做一些研究。我想尽可能应用最佳实践。

标签: javascript phpstorm


【解决方案1】:

好吧,你为什么认为 PhpStorm 会自动知道你的 document 变量是 document 的浏览器实例?没错,readyState 在浏览器中是 document 的属性,但对于 PhpStrom 来说,它是 unresolved,因为它没有被初始化。

【讨论】:

  • 您认为this 可以用作替代品吗?
  • 你的意思是DOMContentLoaded?当然,这个也可以用。 @RubbelDieKatz
  • 但要明确的是,您的代码中一般没有错误。这只是 PhpStorm 中的一个警告。例如,您也可以使用// noinspection JSUnresolvedVariable 抑制此警告,或者直接忽略它。 @RubbelDieKatz
  • 我刚刚添加到我的问题的解决方案缩短了两行并且适用于大多数浏览器,所以我宁愿使用那个。另外,我不需要禁止任何检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 2016-09-27
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多