看看这个小提琴http://jsfiddle.net/fXfSz/:
如果您在控制台中查看,shiftLeft
未定义,但定义如下:
function shiftLeft()
{
for (var char in $('#chars').children())
{
log(char);
char.css({left:char.position().left -100});
}
}
答案 0 :(得分:4)
因为函数shiftLeft
未在全局范围内定义。它是您分配给onload
的函数的本地函数(一个永远不会运行的函数,因为您已将JSFiddle配置为仅运行执行该赋值的函数onload
)。
使用JavaScript绑定您的事件处理程序,而不是使用onclick
属性绑定。
function shiftLeft()
{
for (var char in $('#chars').children())
{
// log is not a global
console.log(char);
char.css({left:char.position().left -100});
}
}
function assignHandlers() {
document.querySelector('button').addEventListener('click', shiftLeft);
}
// If you weren't using JSBin to run this onload:
// addEventListener('load', assignHandlers);
// but since you are:
assignHandlers();
答案 1 :(得分:3)
您的shiftLeft
函数未在全局范围内定义,而是在onload
事件处理程序中定义。
将其从onload
功能代码中删除,并将小提琴包装设置更改为“无包装头”。或者,更好的是,使用click
函数绑定它。
但是你的功能还有其他错误。也许你想要这个:
<button id="idofthebutton">Left</button>
<script>
$('#idofthebutton').click(function(){
$('#chars').children().each(function(){
$(this).css({left:$(this).position().left -100});
});
});
</script>