37

在使用 Firefox (23.0.1) 和 jQuery Mobile (1.3.2) 时,我从我的代码中收到以下警告: Empty string passed to getElementById(). 该消息出现在控制台中(工具 > Web 开发人员 > Web 控制台)。我想消除这个警告。

我看到很多人问过类似的问题,最值得注意的是:定位警告来源的最佳方法:传递给 getElementById() 的空字符串 答案似乎相当一致地指向使用“#”,暗示用户有错.

我试图生成我认为是最低限度的有效代码,我发现这个警告仍然存在。我从其他帖子中假设是我的代码有问题。谁能告诉我如何解决这个问题?

根据其他用户的评论,此警告不会出现在 Chrome(版本 29.0.1547.57)中

提前致谢!

重现此问题的最低有效代码:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
  <title>Test</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="css/jquery.mobile-1.3.2.css" />
  <script src="js/jquery-1.9.1.js"></script>
  <script src="js/jquery.mobile-1.3.2.js"></script>
</head>

<body>
<div data-role="page" id="TestPage">

  <div data-role="content" id="TestContent">

    <p>This is a test</p>

  </div>

</div>

</body>
</html>
4

3 回答 3

19

在我的情况下,这是因为我忘记为标签的“for”属性指定一个值:

缺少 ID

<label for="">Stuff:</label>

固定的

<label for="someID">Stuff:</label>

编辑:删除 for 属性也可以防止该警告

<label>Stuff:</label>
于 2018-08-29T19:48:44.117 回答
2

如已删除的答案和评论中所示,这是Mobile jQuery 中的一个错误,现在已修复。比较 1.3.2 与 1.4.5(当前版本)的行为:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
  <title>Test</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!--link rel="stylesheet" href="https://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" /-->
  <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
  <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>
  <!--script src="https://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.js"></script-->
</head>

<body>
<div data-role="page" id="TestPage">

  <div data-role="content" id="TestContent">

    <p>This is a test</p>

  </div>

</div>

</body>
</html>
于 2015-08-08T15:41:21.420 回答
-1

After going through your jsfiddle I still didn't get where the the function document.getElementById() is being called. I used to also face this problem, but since you are using jquery-mobile its better to use $(#id) as selector just check whether this reference document.getElementById() or $('#id') is being called before the DOM is ready..

于 2014-08-07T10:31:38.410 回答