2011-03-09 78 views
3

我试图用JavaScript获得div的宽度。最初div的宽度是未定义的,即宽度取决于文本数量。是否有可能获得这种div的宽度?我试着用下面的JavaScript代码来做到这一点,但我从Chrome的控制台越来越宽differerent当我检查的div错误的div宽度,当它与javascript

var mydiv = document.getElementById("error_message"); 
var curr_width = mydiv.clientWidth; 
alert(curr_width); 

感谢您的关注

+0

最初,一个无风格的div的宽度等于它的容器宽度。这是由于默认的'display:block'样式。 – zzzzBov 2011-03-09 17:31:09

+0

你是否也可以添加HTML ...我不确定你的DIV是否是其中的文本的宽度......它是一个BLOCK元素 – ManseUK 2011-03-09 17:32:20

+0

它是用'document.write(“

Wrong username or password!
”)生成的;'和css是'div#error_message { \t display:block; \t position:absolute; \t padding:2px; \t top:0px; \t \t border:1px solid#FF0000; \t背景:#FFCCFF; \t font-family:Arial; \t font-size:13px; \t color:#FF0000; }' – andriy 2011-03-09 17:34:05

回答

6

使用offsetWidth

clientWidth计算宽度,offsetWidth是一个在“铬检查元素”(我觉得)

也可以参考注释:P

+0

尝试offsetWidth太 – andriy 2011-03-09 17:38:29

+0

适合我...所以我不知道你可以有什么错:P – n00b 2011-03-09 17:41:29

+0

但你的div也是最初不开始? – andriy 2011-03-09 18:20:17

1

虽然第ËOP不指定一个或其他方式,如果你碰巧有jQuery的可用,你可以随时使用这个:

var curr_width = $('#error_message').width(); 
+0

当我警觉(curr_width)'function(a){var f = this [0]; if(!f)return a == null?null:this; if(d.isFunction(a))return this.each(function(b){var c = d(this); c [ e)(a.call(this,b,c [e]()))}); if(d.isWindow(f)){var g = f.document.documentElement [“client”+ c]; return f .document.compatMode ===“CSS1Compat”&& g || f.document.body [“client”+ c] || g} if(f.nodeType === 9)return ...' – andriy 2011-03-09 18:07:12

0

我设法解决这个问题!我试图直接在javascript中创建div,而没有在html body上定义div。所以在我创建的标签里面

<div id="error_message" style="visibility:hidden;"></div> 

它的工作! 最终的javascript代码是:

document.write("<div id=\"error_message\">Wrong username or password!</div>"); 
var mydiv = document.getElementById("error_message"); 
var curr_width = mydiv.offsetWidth; 
alert(curr_width);