2015-10-24 101 views
2

這裏是我的代碼是不工作Javascript - 如何設置屬性工作?

function gauche() { 
    var voiture = document.getElementsByClassName("voiture")[0]; 
    var position = window.getComputedStyle(voiture).left; 
    alert(position); 
    position = parseInt(position, 10) - 30 + "px"; 
    alert(position); 
} 

我想「VOITURE」位置30PX向左移動。所以我想從這個位置減去30。 這個警告很好30px,然後這個警報很好0px(因爲30 - 30 = 0) 但不幸的是,它不會在我的網頁上更新。我的「voiture」div始終爲30像素,而不是寬度爲0像素。謝謝

+0

你只是想念:'voiture.style.left = position'在最後。 – MinusFour

+0

以'var position'開頭的語句只會將字符串從'left'屬性複製到'position'。它只在_copy_上更新。但是,我們需要查看所有相關的HTML和CSS來解決這個問題,因爲您不能簡單地「寫入」getComputedStyle屬性。 – Xufox

回答

2

使用voiture.offsetLeft;而不是window.getComputedStyle(voiture).left;所以你不必解析它。

的HTMLElement.offsetLeft只讀方法返回當前元素的左上角偏移到 所述的HTMLElement.offsetParent節點內左的 像素的數量。

,並設置簡單的位置:voiture.style.left = voiture.offsetLeft - 30 + 'px';

offsetLeft doc

element.style.left doc

0

您需要使用DOM元素的style屬性:

voiture.style.left = parseInt(position, 10) - 30 + "px"; 

此外,還有一個非常非常你的代碼中錯誤的假設:你認爲設置當前left到局部變量將其值限制到元素,而這不會發生。無論何時想要更改DOM元素(並且這適用於其任何屬性),都需要再次設置其屬性,而不是假定更改局部變量會更改元素。