为什么要添加';1';在javascript中的变量中添加';3';

为什么要添加';1';在javascript中的变量中添加';3';,javascript,html,Javascript,Html,我刚刚创建了两个简单的函数,它们链接到HTML页面上两个按钮的onClick属性 一个函数查找div的宽度,然后只添加“1”,而添加“3”。另一个函数查找div的宽度,然后减去“1”。它没有这样做,而是添加了“1” 有人能告诉我为什么会发生这种情况,并告诉我如何纠正这种情况吗 function bigger() { var div_kubus = document.getElementById('kubus'); var x = div_kubus.offsetWidth;

我刚刚创建了两个简单的函数,它们链接到HTML页面上两个按钮的onClick属性

一个函数查找div的宽度,然后只添加“1”,而添加“3”。另一个函数查找div的宽度,然后减去“1”。它没有这样做,而是添加了“1”

有人能告诉我为什么会发生这种情况,并告诉我如何纠正这种情况吗

function bigger() {
    var div_kubus = document.getElementById('kubus');
    var x = div_kubus.offsetWidth;
    var y = parseInt(x) + 1;
    var tekst = document.getElementById('tekst');
    tekst.value = y;
    div_kubus.style.width = y + 'px';
    /*div_kubus.setAttribute('style','width:'+y+'px');*/
}

function smaller() {
    var div_kubus = document.getElementById('kubus');
    var x = div_kubus.offsetWidth;
    var tekst = document.getElementById('tekst');
    x -= 1;
    div_kubus.setAttribute("style", "width:" + x + "px");
    tekst.value = x;
}

.offsetWidth
将返回包含边框和填充的宽度:


因此,我假设您可能有一个1px的边框(或填充),它将为您的预期宽度增加2(1px表示左侧,1px表示右侧)。因此,增加1,增加3;减去1等于1。

。offsetWidth
将返回包含边框和填充的宽度:


因此,我假设您可能有一个1px的边框(或填充),它将为您的预期宽度增加2(1px表示左侧,1px表示右侧)。因此,增加1,增加3;减去1等于1。

事实并非如此。修正你的断言:
x=2;x=x+1;警报(x)
(x是3,以防万一有任何疑问)。我怀疑有人在某处添加了2作为
x+1+2=x+3
x-1+2=x+1
。因此我认为div_kubus.offsetWidth=2。为了以防万一,如果使用十进制,我建议您在parseInt函数中提供第二个参数10,以避免任何不必要的问题。使用
console.log(x)
在浏览器控制台中查看
x
的值。您会发现它不是
1
。无需在
div\u kubus上使用
parseInt
。offsetWidth
,因为
offsetWidth
已经是一个数字。它不是。修正你的断言:
x=2;x=x+1;警报(x)
(x是3,以防万一有任何疑问)。我怀疑有人在某处添加了2作为
x+1+2=x+3
x-1+2=x+1
。因此我认为div_kubus.offsetWidth=2。为了以防万一,如果使用十进制,我建议您在parseInt函数中提供第二个参数10,以避免任何不必要的问题。使用
console.log(x)
在浏览器控制台中查看
x
的值。你会发现它不是
1
。不需要在
div\u kubus.offsetWidth上使用
parseInt
,因为
offsetWidth
已经是一个数字了。我仍然不太明白,但你的逻辑是有意义的。仅供参考的填充和边距设置为零。我认为,真正的问题是,我正在读取offsetWidth,然后写入style.width。按照你的逻辑,这两者之间有2倍的差别。我仍然不太明白,但你的逻辑是有道理的。仅供参考的填充和边距设置为零。我认为,真正的问题是,我正在读取offsetWidth,然后写入style.width。按照你的逻辑,这两者之间有2倍的差异。