如果你把 JS 改成这样:
function colorChange(x,y) {
document.getElementById("target").style.backgroundPosition=x+'px '+y+' px';
}
背景图像将开始移动。它在您的示例中不起作用的原因:
function colorChange(x,y)
{
var x=("x" + px); // i don't get how to format this stuff
var y=("y" + px);
document.getElementById("target").style.backgroundPosition="(,)"; // this doesn't really go here, does it?
}
是不是这个语句: var x=("x" + px);
这不起作用,因为“x”是一个变量,不应该被引用。'px' 也是一个字符串,应该被引用,这样语句就变成了: var x = x+'px';
现在,在声明中: document.getElementById("target").style.backgroundPosition="(,)";
可以直接设置值而不必使用'var x = x+"px"',所以变成:
document.getElementById("target").style.backgroundPosition=x+'px '+y+' px';
另外,出于好奇,您使用的是 jQuery 还是 jQuery 类型的 JS 库?因为不是说:
document.getElementById("target").style.backgroundPosition=x+' '+y
你可以说:
$("#target").css('background-position', x+'px '+y+'px');
** 编辑 **
只更新您需要的值,而不是 x 和 y:使用 CSS,没有 background-position-x 或等效项。所以你必须在 JS 中保留一个变量来保存每个 X 和 Y 值。然后您的更改功能可以更新变量...然后进行背景位置更改。
看看这段代码:
// variable outside of function() scope
var xposition,
yposition;
// Update values of xposition and or yposition
function updatePositions(axes) { // Should be {x:0,y:0}
// Check to see which axis was passed in x, y or both, then update values
if (typeof(axes.x) !== 'undefined') xposition = axes.x;
if (typeof(axes.y) !== 'undefined') yposition = axes.y;
//Call function to actually move BG image
colorChange();
}
// Function move BG image, using variables declared above
function colorChange() {
// Use xposition and yposition which are changed by JS function above
$("#target").css('background-position', xposition+'px '+yposition+'px');
}
$(document).ready(function() {
updatePositions({x:0,y:0}); // Initialize to starting position
});
上面的 {x:0,y:0} 代码只是我用来将参数传递给具有多个值的函数的一种方式。
{} 表示 Javascript '对象'...所以你可以这样说:
var obj = {};
obj.x = 150;
obj.y = 200;
console.log(obj);
输出:对象 {x: 150, y:200}
HTML(请注意,您可以传入 x 和 y 或仅传入 x 或仅传入 y)
<a href="#" onclick="updatePositions({x:0,y:50})"><img src="/images/swatches/red.jpg"></a>
<a href="#" onclick="updatePositions({x:0,y:100})"><img src="/images/swatches/yellow.jpg"></a>
<a href="#" onclick="updatePositions({x:0})"><img src="/images/swatches/blue.jpg"></a>
<a href="#" onclick="updatePositions({y:200})"><img src="/images/swatches/green.jpg"></a>