Javascript Can';为什么不更新返回的元素.style.left?

Javascript Can';为什么不更新返回的元素.style.left?,javascript,html,Javascript,Html,我返回元素的左位置,并希望稍后在循环中更改它,但它不起作用。我在赋值错误中得到一个无效的左侧 老实说,我不明白。如果我通过函数返回样式,它只会更新px,那么为什么会这样呢?我想不出任何理由,因为这对我来说意义重大 function pos(index) { return wrapper.children[index].style.left; } for (var i = 0; i < 10; i++) { wrapper.appendChild(document.create

我返回元素的左位置,并希望稍后在循环中更改它,但它不起作用。我在赋值错误中得到一个无效的左侧

老实说,我不明白。如果我通过函数返回样式,它只会更新px,那么为什么会这样呢?我想不出任何理由,因为这对我来说意义重大

function pos(index) {
    return wrapper.children[index].style.left;
}

for (var i = 0; i < 10; i++) {
  wrapper.appendChild(document.createElement('div'));
  pos(i) = Math.random() * w + 'px';;
}
功能位置(索引){
返回包装器.children[index].style.left;
}
对于(变量i=0;i<10;i++){
appendChild(document.createElement('div'));
pos(i)=Math.random()*w+'px';;
}

您不是在返回向左的指针,而是在返回值

您需要将值发送到pos或返回样式

function pos(index, px) {
    wrapper.children[index].style.left = px;
}

for (var i = 0; i < 10; i++) {
    wrapper.appendChild(document.createElement('div'));
    pos(i, Math.random() * w + 'px');
}
功能位置(索引,px){
wrapper.children[index].style.left=px;
}
对于(变量i=0;i<10;i++){
appendChild(document.createElement('div'));
pos(i,Math.random()*w+'px');
}

功能位置(索引){
wrapper.children[index].style;
}
对于(变量i=0;i<10;i++){
appendChild(document.createElement('div'));
pos(i).left=Math.random()*w+'px';
}

尝试以下方法:

function pos(index) {
    return wrapper.children[index].style;
}

for (var i = 0; i < 10; i++) {
   wrapper.appendChild(document.createElement('div'));
   var style = pos(i);
   style.left = Math.random() * w + 'px';
}
功能位置(索引){
返回包装器.children[index].style;
}
对于(变量i=0;i<10;i++){
appendChild(document.createElement('div'));
变量类型=位置(i);
style.left=Math.random()*w+'px';
}

函数返回所需的对象,但不能修改它(它不是l值)。您必须首先将其存储在变量中(即l值)。

也许这就是您需要的:

var新元素,
我
wrapper=document.getElementById('wrapper');
对于(i=0;i<10;i++){
//将元素添加到包装器中
appendChild(getPositionElement());
}
函数getPositionElement(){
//宽度,我不知道你想从哪里得到这个
var w=1000,
//创建新元素
el=document.createElement('div');
//设置left position属性
el.style.left=Math.random()*w+'px';
返回el;
}
#包装器{
位置:相对位置;
高度:300px;
}
#包装部{
高度:50px;
宽度:50px;
边框:2件纯黑;
位置:绝对位置;
}

我不知道你想在这里做什么?对不起,宽度是w。基本上,它将div分散在整个屏幕上。@tymeJV它可以是任何东西,比如100+“px”…它根本不起作用。这段代码毫无意义。@Rupert,但我的意思是返回wrapper.children[index].style.left,然后更新px。至少这是我试图实现的,它也失败了,因为这不会改变任何事情。实际上,你也可以用变量跳过这一部分(正如epascarello所示),你是对的。假设我想省略。左边的部分,有什么技巧?我明白了,谢谢你指出这个逻辑错误。我有能力写一些非常疯狂的东西,但有时我会遇到这些拦截器:(不,我明确地试图通过一个函数来做这件事。原始代码非常复杂,所以我试图减少重复。好吧,现在它被包装在一个函数中;)
function pos(index) {
    return wrapper.children[index].style;
}

for (var i = 0; i < 10; i++) {
   wrapper.appendChild(document.createElement('div'));
   var style = pos(i);
   style.left = Math.random() * w + 'px';
}