Javascript 未定义样式
我有大学作业,经典15字谜。我对这两种风格有意见。这是我遇到问题的代码Javascript 未定义样式,javascript,Javascript,我有大学作业,经典15字谜。我对这两种风格有意见。这是我遇到问题的代码 function siirra_pala(pala) { var palaRivi = parseInt(pala.style.top) / palanKoko; var palaSarake = parseInt(pala.style.left) / palanKoko; } 错误代码为未捕获类型错误:无法读取未定义的属性“top”和未捕获类型错误:无法读取未定义的属性“left” 如果有帮助: 西罗帕拉帕拉正在移动
function siirra_pala(pala) {
var palaRivi = parseInt(pala.style.top) / palanKoko;
var palaSarake = parseInt(pala.style.left) / palanKoko;
}
错误代码为未捕获类型错误:无法读取未定义的属性“top”和未捕获类型错误:无法读取未定义的属性“left”
如果有帮助:
西罗帕拉帕拉正在移动
palaRivi是tileRow,palaSarake是tileColumn
帕兰科科是一个波浪形的城市
我把帕兰科科设定为100。样式定义如下:
function muodosta_palat(pelialue) {
for (var y = 0; y < 4; y++) {
for (var x = 0; x < 4; x++) {
if (!(x === tyhja_paikka.x && y === tyhja_paikka.y)) {
var pala = document.createElement('div');
pala.id = 'pala' + x + y;
pala.textContent = 4 * y + x + 1;
pala.style.left = x * palanKoko + 'px';
pala.style.top = y * palanKoko + 'px';
pala.className = 'pala';
pelialue.appendChild(pala);
}
}
}
如果您需要更多的代码,请告诉哪一个。多谢各位
@贝吉:
window.onload = function () {
muodosta_palat(document.getElementById('pelialue'));
var palat = document.querySelectorAll(".pala");
document.getElementById('sekoitusnappi').onclick = sekoita;
for (var i = 0; i < palat.length; i++) {
palat[i].addEventListener("click", siirra_pala);
palat[i].addEventListener("mouseover", mouseOver);
palat[i].addEventListener("mouseout", mouseOut);
}
};
在这里:
传递给siirra_pala的参数是单击事件,而不是单击的元素。您应该修改函数,从事件对象中选择clicked元素属性,或者直接使用它
见此:
document.getElementById'x'。addEventListenerclick,handler;
功能手柄{
console.loge;//完整事件对象
console.logthis;//单击的元素
this.style.background=aaa;
}
x{
宽度:50px;
高度:50px;
背景:eee;
}
从您的错误来看,pala似乎未定义、未设置、不存在,至少不在该函数的范围内 变量pala是在一个函数中创建的,它只在这个函数中已知。您要做的是捕获单击事件,并将单击的内容传递给函数 如果更改对函数的调用
palat[i].addEventListener("click", function () { siirra_pala(this) });
引用应该没有问题。在开始填充样式属性之前,可能您缺少了pala.style={}。您在哪里调用siirra_pala?使用什么参数?@OmriAharon:不,pala是一个div,有一个.style属性already@Bergi在原始文件中添加了代码post@muti:啊,您正在将其用作事件处理程序。你认为它将被称为什么?修复程序会做到这一点。但是,您编写的第一行是不正确的-事实上,pala是根据错误定义的,因为错误表示top of undefined,这意味着style属性未定义。事实上,经过一些测试:这似乎是因为@multi将eventlistener绑定到函数时,没有参数,事件作为参数MouseeEvent发送{dataTransfer:null…所以虽然它是某种东西,但它不是预期的。jsfiddle.net/tv22wydd
palat[i].addEventListener("click", function () { siirra_pala(this) });