所有Javascript行未执行

All Javascript line not executed

本文关键字:执行 Javascript 所有      更新时间:2023-09-26

我有一个简单的html页面是-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(e) {
 var s = $("#d").get(0).getElementsByTagName("a");
  for(var x=0;x<s.length;x++){
    document.writeln(s.length);
  }
  var k=document.createElement("a");
  k.innerHTML="hello";
  var q=document.getElementById("d");
  q.appendChild(k);
});
</script>
</head>
<body>
<div id="d">
<a><img class="zzz"/></a>
<a><img class="zzz"/></a>
</div>
</body>
</html>

对于循环,Javascript只执行到为止(元素k不追加)。如果for循环被删除,那么只有元素k被追加。下面的代码是不是应该在for循环执行后执行?

欢迎来到StackOverflow!在你学习开发的过程中给你一些建议:

  • 总是使用有意义的变量名,很难跟踪单字母变量表示
  • 不要使用文档。写调试时,使用
  • 的控制台
  • 如果您使用的是像当你开始使用jQuery的时候,尽可能多地使用它学习它。只有当你有一个引人注目的这样做的原因

你的函数可以用纯jQuery重写,像这样:

$(function() {
  var container = $('#d');
  console.log(container.find('a').length);
  container.append('<a>hello</a>');
});

我没有运行你的代码,但你的错误可能与这条语句有关:$("#d").get(0).getElementsByTagName("a");eq()方法返回一个jQuery对象,该对象上没有getElementsByTagName()方法。

如果您想要一个没有jQuery包装器的普通DOM对象,您可以像数组一样处理jQuery对象:$('#d')[0].getElementsByTagName("a");,但就像我说的,如果要使用它,最好坚持使用jQuery库。

祝你学习好运!

你不能在文档加载后使用writeln(或write)(或者我最好说:你不应该,因为它会覆盖整个文档,包括#d,这将导致错误,因为这个元素在使用writeln后不再可用)

我猜你想要这样的东西:

$(document).ready(function(e) {
  $('a').prepend(function(i){return i;});
  $('#d').append('hello');
});

演示:http://jsfiddle.net/stRBU/2/