选择表中的一行或多行,并为该元素提供背景的技术
Technique to select a row or multiple rows of a table, and give that element a background
我正在制作一个游戏级编辑器,在那里我使用表格创建了一个网格。现在,首先我实现了点击和拖动功能,一次选择多个单元格。
现在我需要更改单元格的背景,这些单元格是通过单击表下的另一个元素或按钮来选择的。
此外,我需要从这个网格创建一个多维数组,以知道哪个单元格上有元素。有什么帮助吗?。https://jsfiddle.net/56e7h23L/1/
var row = 15;
var column = 30;
var table = document.createElement('table');
var mousedown = false;
var selected = false;
for(i = 1; i <= row; i++){
var tr = document.createElement('tr');
for(j = 1; j <=column; j++){
var td = document.createElement('td');
td.className = 'cell';
td.addEventListener("mousedown", function(e) {
e.preventDefault();
});
td.onmousedown = (function(i, j){
return function(){
console.log(i);
console.log(j);
if(selected != true){
this.className += ' active';
mousedown = true;
}else{
this.className = 'cell';
}
}
})(i, j);
td.onmouseover = (function(i,j){
return function(){
if(mousedown){
this.className += ' active';
}
}
})(i, j);
document.onmouseup = function(){
console.log('hello');
mousedown = false;
}
tr.appendChild(td);
}
table.appendChild(tr);
}
document.body.appendChild(table);
您可以通过访问上一个和下一个(从当前)tr的td
td.onmousedown = function(){
var currentIndexInParent = whichChild(this);
var tdAtSameLevelAboveTr = this.parentElement.previousSibling.childNodes.item( currentIndexInParent );
var tdAtSameLevelBelowTr = this.parentElement.nextSibling.childNodes.item( currentIndexInParent );
};
function whichChild(elem){
var i= 0;
while((elem=elem.previousSibling)!=null) ++i;
return i;
}
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- 主元素属性?(或技术)
- 从服务器和/或客户端加载动态元素的典型技术是什么
- 基于表单元素的选定值动态更改表单域标签的技术
- 选择表中的一行或多行,并为该元素提供背景的技术
- 通过getElementById或其他技术从iFrame中查找子元素