我正在尝试制作一个div网格,当鼠标改变颜色时。然后,当单击a按钮并输入新数字时,然后生成边长为该多个div的新网格。我是javascript和jQuery的新手,无法弄清楚为什么我的代码不会生成div。
这是我的剧本
$('.block').mouseenter(function () {
$(this).css('background-color', 'black');
});
function newGrid(x) {
for (i = 0; i > x * x; i++) {
$('.container').append('<div class="block"></div>');
}
$('.block').height(960 / );
$('.block').width(960 / );
}
function clearContainer() {
$('.block').remove();
}
function askGrid() {
var num = prompt("enter box length");
clearContainer();
newGrid(num);
}
function firstGrid() {
newGrid(16);
$('#reset').click(function () {
askGrid();
});
}
$(document).ready(firstGrid);
这是我的css
.container {
margin: 30px auto 0px auto;
height: 960px;
width: 960px;
border: 1px solid black;
}
.block {
border:0px;
margin:0px;
padding:0px;
float:left;
background-color: yellow;
}
#reset {
display:block;
padding:5px 20px;
margin:0 auto;
}
html有一个css重置,在正文中我有一个id =“reset”的按钮和一个class =“container”的div
谢谢!
答案 0 :(得分:0)
这里有一个错误for (i = 0; i > x * x; i++)
它应该是i < x
。
我不确定这是什么
$('.block').height(960 / );
$('.block').width(960 / );
你可以分别在css中设置高度和宽度
您还需要这样才能使mouseenter
事件正常工作
$('.container').on('mouseenter','.block',function () {
$(this).css('background-color', 'black');
});
由于添加的项目是动态的。
答案 1 :(得分:0)
几个问题:
设置高度和宽度时的斜线是错误的(960除以某事或只是960)
for循环错误:它应该是
for (i = 0; i < x * x; i++)
newGrid
答案 2 :(得分:0)
欢迎来到jquery,一个充满兴奋和痛苦的世界!
此代码
$('.block').mouseenter(function () {
$(this).css('background-color', 'black');
});
将hover函数绑定到运行时页面上的所有现有.block
元素。它位于脚本的顶部,因此它将执行一次,在页面加载时将此属性绑定到所有.block
元素,而不是之后创建的.block
元素。要解决此问题,请将其添加到“newGrid”函数中,以便在创建新元素时重新绑定它们。
在你的循环中,你需要for (i = 1; i < x * x; i++)
,从1而不是0开始索引,否则你将有一个1的错误并创建一个额外的框。
要设置.block的正确高度,您希望将.container的维数除以x,即块的大小:
$('.block').height(960 / x);
$('.block').width(960 / x);
以下是一般编程技巧:
this fiddle中的演示!