Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义样式_Javascript - Fatal编程技术网

Javascript 未定义样式

Javascript 未定义样式,javascript,Javascript,我有大学作业,经典15字谜。我对这两种风格有意见。这是我遇到问题的代码 function siirra_pala(pala) { var palaRivi = parseInt(pala.style.top) / palanKoko; var palaSarake = parseInt(pala.style.left) / palanKoko; } 错误代码为未捕获类型错误:无法读取未定义的属性“top”和未捕获类型错误:无法读取未定义的属性“left” 如果有帮助: 西罗帕拉帕拉正在移动

我有大学作业,经典15字谜。我对这两种风格有意见。这是我遇到问题的代码

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) });