跨度未附加到父级 div
spans not being appended to parent div
我有一个非常简单的 js 问题,但似乎无法解决。为什么我的跨度没有附加到 div? jQuery 加载正常,页面未出现任何错误,并且 console.log 正在正确输出循环。
JS:
var matrix = [];
createGrid();
function createGrid () {
for(var i=0; i < 6; i++) {
matrix[i] = [];
for(var j=0; j < 6; j++) {
log("["+i+"]["+j+"]");
var $span = $('<span />');
$("#myGrid").append($span);
}
}
}
function log (w) {
console.log(w);
}
HTML:
<body>
<div id="myGrid"></div>
</body>
控制台输出:您可以看到没有子项被附加...这是为什么?
<div id="myGrid"></div>
编辑:我确实提到没有抛出控制台错误,所以 log()
不是问题,因为我在别处定义了它。我确实在空集上操作,因为 HTML 尚未加载...我需要 jquery 准备运行。
您可能试图在 DOM 准备就绪之前对其进行查询。
将所有代码包装在 jQuery 函数中以测试是否是这种情况:
$(function(){
//your code here
});
编辑:
作为对 "log is not a function" 的回应,问题指出他能够在控制台中看到输出。由此我假设 console.log 是别名:函数包装器,库助手..等等。 Post 说它有效,我 运行 它。
将来以下技术可能对您调试 DOM 问题有所帮助:
1) 发出警报($("selector_you_want_to_test")[0])
这将暂停浏览器,您可以在开发人员工具 window
中检查 DOM 树结构的状态
2) 放入调试语句
3) 对于非常大的项目:获取时间线配置文件(在 google chome 中),配置文件将显示 DOM 何时完成以及您的功能何时 运行。这种观点使得推理像这样的时间敏感问题变得非常容易。
祝你好运
你有一个 "log" 功能或我认为你想成为的任何东西 "console.log"
你的代码在其他方面做了它应该做的事情,但我认为这是你真正想要它做的:http://jsfiddle.net/swm53ran/27/
var matrix = [];
createGrid();
function createGrid () {
for(var i=0; i < 6; i++) {
matrix[i] = [];
for(var j=0; j < 6; j++) {
console.log("["+i+"]["+j+"]");
var $span = "<span>["+i+"]["+j+"]</span><br/>";
$("#myGrid").append($span);
}
}
}
如果您看到 log()
调用(意味着您已经在其他地方定义了它),那是因为您在 HTML 之前 运行 JavaScript已加载,您可以在此处看到 http://jsfiddle.net/dqrm07b2/1/
基本上,$('#myGrid').append($span)
上的操作没有做任何事情,因为 $('#myGrid')
正在返回一个空集。
我知道有些人喜欢 jQuery 中的这种无提示错误功能,但我讨厌它。尝试对空集进行操作应该会引发错误,这对我来说隐藏了很多错误。
尝试如下代码并确保您的代码在 div 之后或使用 document.ready()
:
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<style>
#myGrid {
position: relative;
width: 500px;
height: 500px;
background-color: silver;
}
#myGrid > span {
/* position: ;*/
width : 20px;
height: 20px;
background-color: white;
}
</style>
</head>
<body>
<div id="myGrid"></div>
<script>
var matrix = [];
createGrid();
function createGrid () {
for(var i=0; i < 6; i++) {
matrix[i] = [];
for(var j=0; j < 6; j++) {
// console.log("["+i+"]["+j+"]");
var span = '<span>'+i+'</span>';
$("#myGrid").append(span);
}
}
}
</script>
</body>
</html>
我有一个非常简单的 js 问题,但似乎无法解决。为什么我的跨度没有附加到 div? jQuery 加载正常,页面未出现任何错误,并且 console.log 正在正确输出循环。
JS:
var matrix = [];
createGrid();
function createGrid () {
for(var i=0; i < 6; i++) {
matrix[i] = [];
for(var j=0; j < 6; j++) {
log("["+i+"]["+j+"]");
var $span = $('<span />');
$("#myGrid").append($span);
}
}
}
function log (w) {
console.log(w);
}
HTML:
<body>
<div id="myGrid"></div>
</body>
控制台输出:您可以看到没有子项被附加...这是为什么?
<div id="myGrid"></div>
编辑:我确实提到没有抛出控制台错误,所以 log()
不是问题,因为我在别处定义了它。我确实在空集上操作,因为 HTML 尚未加载...我需要 jquery 准备运行。
您可能试图在 DOM 准备就绪之前对其进行查询。 将所有代码包装在 jQuery 函数中以测试是否是这种情况:
$(function(){
//your code here
});
编辑: 作为对 "log is not a function" 的回应,问题指出他能够在控制台中看到输出。由此我假设 console.log 是别名:函数包装器,库助手..等等。 Post 说它有效,我 运行 它。
将来以下技术可能对您调试 DOM 问题有所帮助:
1) 发出警报($("selector_you_want_to_test")[0]) 这将暂停浏览器,您可以在开发人员工具 window
中检查 DOM 树结构的状态2) 放入调试语句
3) 对于非常大的项目:获取时间线配置文件(在 google chome 中),配置文件将显示 DOM 何时完成以及您的功能何时 运行。这种观点使得推理像这样的时间敏感问题变得非常容易。
祝你好运
你有一个 "log" 功能或我认为你想成为的任何东西 "console.log"
你的代码在其他方面做了它应该做的事情,但我认为这是你真正想要它做的:http://jsfiddle.net/swm53ran/27/
var matrix = [];
createGrid();
function createGrid () {
for(var i=0; i < 6; i++) {
matrix[i] = [];
for(var j=0; j < 6; j++) {
console.log("["+i+"]["+j+"]");
var $span = "<span>["+i+"]["+j+"]</span><br/>";
$("#myGrid").append($span);
}
}
}
如果您看到 log()
调用(意味着您已经在其他地方定义了它),那是因为您在 HTML 之前 运行 JavaScript已加载,您可以在此处看到 http://jsfiddle.net/dqrm07b2/1/
基本上,$('#myGrid').append($span)
上的操作没有做任何事情,因为 $('#myGrid')
正在返回一个空集。
我知道有些人喜欢 jQuery 中的这种无提示错误功能,但我讨厌它。尝试对空集进行操作应该会引发错误,这对我来说隐藏了很多错误。
尝试如下代码并确保您的代码在 div 之后或使用 document.ready()
:
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<style>
#myGrid {
position: relative;
width: 500px;
height: 500px;
background-color: silver;
}
#myGrid > span {
/* position: ;*/
width : 20px;
height: 20px;
background-color: white;
}
</style>
</head>
<body>
<div id="myGrid"></div>
<script>
var matrix = [];
createGrid();
function createGrid () {
for(var i=0; i < 6; i++) {
matrix[i] = [];
for(var j=0; j < 6; j++) {
// console.log("["+i+"]["+j+"]");
var span = '<span>'+i+'</span>';
$("#myGrid").append(span);
}
}
}
</script>
</body>
</html>