我的目标是将数值存储在变量中,其次在click事件上增加/减少此值,最后使用该值进行样式设计。Javascript变量 - 初始化/数学/存储数值
我想出了看起来像这样的功能:
function onButtonClick(e) {
var rot = this.className.slice(5),
rotaX,
rotaY,
rotationX,
rotationY,
step = 90;
if(rot === 'up'){rotationX = rotaX - step} /* {alert (rot);}// //{rotationX -= step}// */
else if (rot === 'down') {rotationX = rotaX + step}
else if (rot === 'right') {rotationY = rotaY - step}
else if (rot === 'left') {rotationY = rotaX + step };
var rotaX = rotationX ;
var rotaY = rotationY;
cubeRot.style.transform = "rotateX("+ rotationX +"deg) rotateY("+ rotationY +"deg)";
}
评价和定位的选择似乎是正确的,所以这个问题必须在如何我总结/存储的值,结果是它不” t返回任何值...
顺便说一句,关于优化语法的任何建设性意见是值得欢迎的。
EDIT1
原本我没有存储所述值和所述码是
var rotations = {
up: "rotateY(90deg)",
down: "rotateY(-90deg)",
left: "rotateX(90deg)",
right: "rotateX(-90deg)"
};
function onButtonClick(e) {
var rot = this.className.slice(5);
cubeRot.style.transform = rotations[rot];
}
[].slice.call(document.querySelectorAll("[class^='show-']")).forEach(function(el) {
el.addEventListener("click", onButtonClick, false);
})
EDIT2
var rotationX=0,
rotationY=0;
function onButtonClick(e) {
var rot = this.className.slice(5),
step = 90;
if(rot === 'up') {rotationX -= step}
else if (rot === 'down') {rotationX += step}
else if (rot === 'right') {rotationY -= step }
else if (rot === 'left') {rotationY += step };
cubeRot.style.transform = "rotateX("+ rotationX +"deg) rotateZ("+ rotationY +"deg)";
}
[].slice.call(document.querySelectorAll("[class^='show-']")).forEach(function(el) {
el.addEventListener("click", onButtonClick, false);
});
以这种方式可变
rotationX ,rotationY;
被正确地存储
- RotaX
和RotaY
被使用少
我会使用'classList'属性与'contains()'一起检查这个类。此外,因为'switch'语句可能更易读,所以多个'if-else'。 – Sirko 2015-01-21 10:30:21
你在哪里得到'rotax'和'rotay'值?你似乎在初始化他们的功能,但然后尝试在计算中使用它们,这会给你未定义的+ /步骤。 – Andy 2015-01-21 10:30:39
RotaX未定义它没有得到初始化..我也试图使用Parseint,但仍然无法得到它 – maioman 2015-01-21 10:43:10