Can';t使用javascript获取HTML CSS元素的初始值
我试图操纵一个div元素。虽然我定义了某些属性值,但似乎无法获得初始值 问题是:Can';t使用javascript获取HTML CSS元素的初始值,javascript,html,css,Javascript,Html,Css,我试图操纵一个div元素。虽然我定义了某些属性值,但似乎无法获得初始值 问题是: 我已经筋疲力尽了。。。谢谢。使用item.offsetLeft和item.offsetTop怎么样。这将包括边距和填充,但您应该能够轻松地补偿这一事实。是一个更新的JSFIDLE document.getElementById("xval").innerHTML = item.offsetLeft; document.getElementById("yval").innerHTML = item.offsetTop
我已经筋疲力尽了。。。谢谢。使用
item.offsetLeft
和item.offsetTop
怎么样。这将包括边距和填充,但您应该能够轻松地补偿这一事实。是一个更新的JSFIDLE
document.getElementById("xval").innerHTML = item.offsetLeft;
document.getElementById("yval").innerHTML = item.offsetTop;
同样,在本例中,这些调用分别返回
10、10
,而不是您正在查找的0、0
。也就是说,这是否足以让您克服问题?问题在于您的样式不是在html中定义的,而是来自css。在这种情况下,您需要使用getComputedStyle来检索样式信息。做点像
document.defaultView.getComputedStyle(项,空)
与item.style相比。我认为您必须使用
document.styleSheets
,找到您的样式表,然后在cssRules(IE规则)列表中循环,将选择器与“#viewbase”
匹配,然后您可以像使用内联样式一样访问样式属性,由于中的样式信息还有一个CSSStyleDeclaration(因此可以使用element.style.left等等)
Sidenode:getComputedStyle
在大多数IE版本上都不起作用。IE对每个元素都有currentStyle
属性,但这不是一回事。也许两者的结合也会起作用
更新
设法得到初始位置,如果你需要的话,如果我记得清楚的话,你可以重新分配这些值
function trigger(e) {
item = this;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
x1 = e.pageX;
y1 = e.pageY;
}
else if (e.clientX || e.clientY) {
x1 = e.clientX;
y1 = e.clientY;
}
document.getElementById("ex").innerHTML = x1;
document.getElementById("wye").innerHTML= y1;
// the stylesheet you defined, in a standalone context, it might
// have another index, (i.e. 0 if it's the only one)
list = document.styleSheets[2].cssRules;
for(var i=0;i<list.length;i++)
//match #viewbase
if(list[i].selectorText.toLowerCase() == "#"+item.id)
{ item = list[i];
break;
}
document.getElementById("xval").innerHTML = item.style.left;
document.getElementById("yval").innerHTML = item.style.top;
document.getElementById("parseX").innerHTML = parseInt(item.style.left, 10);
document.getElementById("parseY").innerHTML = parseInt(item.style.top, 10);
document.getElementById("debug").innerHTML = 'clicked!';
document.onmouseup = release;
}
如果这样做,我必须知道元素的边距值和父对象的边距值…这到底返回什么?如何从中获取特定的属性值?它返回一个CSSStyleDeclaration对象,其中包含元素的所有CSS属性的最终使用值。用这个替换item.style。例如,使用document.defaultView.getComputedStyle(item,null).left代替item.style.left。例如,见。
var styleDef = window.getComputedStyle(item) || item.currentStyle;
document.getElementById("xval").innerHTML = styleDef.left;
document.getElementById("yval").innerHTML = styleDef.top;