html&javascript来制作一个图形计数器
html & javascript to make a graphical counter
我想勾选某些事件的天数,并标记它们的"条纹"-我想在表上将它们表示为正方形或圆形
例如"晴天"与"阴天">
每个COLUMN都会计算事件的发生次数,事件的更改会移动到下一个COLUMN。。序列将逐行向上(或向下(进行。
示例-表5行x 10列(S=晴天,C=阴天(仅仅使用javascript——使用两个按钮"s"answers"c",我将如何告诉dom下一个要标记哪个单元格。
开始表单空白-点击"s",s进入第一个单元格,点击"s",s进入第二行,点击"c"(因为这是上次运行天数的变化(,c进入第二列第一行。。。简而言之,如果当前的单击与上次相同,则前进一行,如果不同,则前进列。。。在这方面,不应该只有2次,我可以有3到4种"类型"的事件(比如雨或雪(。
我会把它全部放在一个数组中吗:[s,s,s,c,s,s,s,c,s,c]
将每个事件添加到数组中,然后循环数组,当为current时更改=最后的
但是如何引用"正确"的表单元格?????
<table border="1" width="460" align="center">
<tr>
<td>S</td>
<td>S</td>
<td>S</td>
<td>S</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>C</td>
<td>C</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>S</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>C</td>
<td>C</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>S</td>
<td>S</td>
<td>S</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
碎片
这里的关键是跟踪
- 当前对象
- 过去的对象
- 当前单元格
每个对应一个变量。循环时,根据需要增加这些变量
例如,如果当前对象与过去的对象不相同(一条虚线(,则必须将过去的对象更改为当前对象,然后继续:
if (current !== past) {
past = current;
}
所以这是一个开始。
现在,您必须跟踪当前单元格。让我们使用一个JS对象来定义行和列。由于我们从第1行第1列开始,我们将默认设置为:
var cell = {
"row": 1,
"col": 1
}
现在,您必须根据条纹来增加行和列。如果条纹被延长,那么你必须增加行数。如果条纹被打破,您必须增加列,并将行设置回1:
if (current !== past) {
past = current;
// Increment the column and reset the row
cell.col++;
cell.row = 1;
} else {
// Increment row
cell.row++;
}
现在,我们必须将对象放置到正确的单元格中。我们将使用jQuery的类似CSS的选择器来实现这一点。特别是,:nth-child(...)
选择器在这里非常有用
这个选择器只是选择父对象内部的第n个编号的子对象。例如,td:nth-child(2)
将选择其父对象内部的第二个td
。
实现这一点相当容易,因为我们已经有了cell
对象:
$('table tr:nth-child(' + cell.row + ') td:nth-child(' + cell.col + ')').html(current);
.text(current)
在这里也可用,但它只接受纯文本。
把它们放在一起
我们将使用array
作为天气事件阵列的定义:
var array = [s, s, s, s, c, c, s, s, s, s, c, s, c, s, c, c, c, c];
当然,我们使用for
循环来运行数组:
var s = "s",
c = "c",
array = [s, s, s, s, c, c, s, s, s, s, c, s, c, s, c, c, c, c],
cell = {
"row": 1,
"col": 1
};
for (var i = 0; i < array.length; i++) {
var current = array[i],
past;
// Catch the initial state
if (i === 0) {
past = current;
$('table tr:nth-child(' + cell.row + ') td:nth-child(' + cell.col + ')').html(current);
} else {
past = array[i - 1];
if (current !== past) {
past = current;
// Increment the column and reset the row
cell.col++;
cell.row = 1;
} else {
// Increment row
cell.row++;
}
$('table tr:nth-child(' + cell.row + ') td:nth-child(' + cell.col + ')').html(current);
}
}
JSFiddle:
http://jsfiddle.net/kTsEx/3/
- 添加一个接触计数器敲除
- 如何控制不同计数器中的一个变量
- 向上一个/下一个图像幻灯片添加计数器(仅限javascript/css)
- 如何创建一个计数器循环,该循环在单击提交按钮时启动,并输出多行单词,每个单词前面都有一个数字
- 向 jquery 同位素添加一个计数器
- 仅从一个页面中删除统计计数器脚本
- JS计数器:在一个函数中设置不同的速度(间隔)
- 我有一个基于计数器的 if/else 语句,但由于某种原因,else 不起作用
- 向 Angular ng-repeat(角度)添加一个计数器
- 如何添加一个计数器来显示找到的文本匹配数
- 我如何才能建立一个数字计数器,以scretchs到无限的数字
- 创建一个计数器以在Yii中添加多个表单
- 试图在do while循环中放入一个尝试计数器(Basic JavaScript)
- Javascript循环,计数器在一个循环中两次等于0
- 创建一个每秒更新一次的计数器
- 使用flipclock.js自动每日重置计数器到一个时间
- 需要一个计数器每天更新
- 在Node.js中创建的一个计数器,它以确定的时间间隔改变其值
- 为什么我的HTML id属性无效,当我有4倍相同的id加一个计数器
- 如何开始一个计数器