gpt4 book ai didi

javascript - 如何正确更新对象?

转载 作者:行者123 更新时间:2023-12-02 16:11:28 24 4
gpt4 key购买 nike

我有一个对象生成器。它工作正常。

'use strict';
function Div(isim) {
this.loc = document.getElementById(isim);
var style = window.getComputedStyle(this.loc);
this.width = style.getPropertyValue('width');
this.height = style.getPropertyValue('height');
this.left = style.getPropertyValue('left');
this.top = style.getPropertyValue('top');
}

但稍后我会更新元素的属性

var d = new Div("d");
d.loc.style.left = getRandomInt(0, window.innerWidth - 50) + "px";
d.loc.style.top = getRandomInt(0, window.innerHeight - 50) + "px";
console.log(d.left); //gives auto
console.log(d.width); //gives the right value

console.log(d.left)是错误的。我已经找到了修复它的方法,但我认为它有点脏:

var d = new Div("d");
d.loc.style.left = getRandomInt(0, window.innerWidth - 50) + "px";
d.loc.style.top = getRandomInt(0, window.innerHeight - 50) + "px";
d = new Div("d");
console.log(d.left); //gives the right value
console.log(d.width); //gives the right value

还有另一种方式(我更喜欢一行)吗?不幸的是,我英文不好,如果问题、标题有错误,请编辑。

最佳答案

该值已缓存,因此您需要重新计算。

function Div(isim) {
this.loc = document.getElementById(isim);
var style = window.getComputedStyle(this.loc);
this.width = style.getPropertyValue('width');
this.height = style.getPropertyValue('height');
this.left = style.getPropertyValue('left');
this.top = style.getPropertyValue('top');
this.getStyle = function (prop) {
return style.getPropertyValue(prop);
}.bind(this);
}

function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}

var d = new Div("d");
d.loc.style.left = getRandomInt(0, window.innerWidth - 50) + "px";
d.loc.style.top = getRandomInt(0, window.innerHeight - 50) + "px";
console.log(d.getStyle('left'));
console.log(d.getStyle('width'));

<强> http://jsfiddle.net/s72vg53z/1/

关于javascript - 如何正确更新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com