【发布时间】:2015-11-02 22:20:07
【问题描述】:
我正在完成 odin 项目课程,并被困在画板项目中。任务是使用 jquery 创建一个网格,将鼠标悬停在上面时填充正方形,然后使用一个按钮来清除该区域并提供更改该区域中正方形数量的选项。在我的代码中,我试图通过提示输入来更改网格中的方块数,但是在我在提示中输入不同的数字后,变量并没有改变。
我的 javascript-
$(document).ready(function() {
//create table
var area = 16;
for(i=0;i<area;i++) {
$('table').append('<tr></tr>')
};
for(i=0;i<area;i++) {
$('tr').append('<td></td>')
};
//fill in background when hovered over
$('td').hover(function() {
$(this).addClass('fill')
});
//clear pad when button is clicked and set new area
$('button').click(function() {
$('td').removeClass('fill')
var input = prompt("enter desired area of new sketchpad (ex. \"16\" for a 16x16 grid, \"64\" for a 64x64 grid)","16");
area = input;
});
});
我的html-
<!doctype html>
<html lang="en">
<head>
<title>Skethpad</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<button type="button">Clear Sketchpad</button>
<div id="container">
<table>
</table>
</div>
</body>
</html>
任何帮助或指点将不胜感激!
编辑-使用 Waterscroll 的解决方案我能够使用用户提示更改网格,但现在单个元素在提示后悬停时不会填充,但会在提示之前填充。有什么想法吗?
Edit-修复了所有问题,感谢大家的帮助!这是 javascript 的工作方式
$(document).ready(function() {
createTable(16);
hoverOver();
});
//create table
var createTable = function(area) {
$('table').empty();
for(i=0;i<area;i++) {
$('table').append('<tr></tr>')
};
for(i=0;i<area;i++) {
$('tr').append('<td></td>')
};
};
//fill in <td> elements when hovered over
var hoverOver = function() {
$('td').hover(function() {
$(this).addClass('fill');
console.log("filling");
});
}
//clear and create new table when button is clicked
var onClick = function() {
$('td').removeClass('fill')
var input = prompt("enter desired area of new sketchpad (ex. \"16\" for a 16x16 grid, \"64\" for a 64x64 grid)","16");
if (input != null) {
createTable(parseInt(input));
hoverOver();
} else {
createTable(16);
hoverOver();
}
};
【问题讨论】:
-
是什么让您认为变量没有变化?更改变量后,您没有任何代码可以重绘表格。
-
area = parseInt(input); -
append('<td></td>')可以简单地为append('<td />') -
也许有一些额外的见解来自:jsfiddle.net/f6fw5a8g
标签: javascript jquery