Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用javascript获取HTML CSS元素的初始值_Javascript_Html_Css - Fatal编程技术网

Can';t使用javascript获取HTML CSS元素的初始值

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

我试图操纵一个div元素。虽然我定义了某些属性值,但似乎无法获得初始值

问题是:


我已经筋疲力尽了。。。谢谢。

使用
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;