ie下可以用offsetX得到相对的x坐标,ff下如下面的方法:
function getOffset(e){
var target = e.target;
if(target.offsetLeft == undefined){
target = target.parentNode;
}
var pageCoord = getPageCoord(target);
var eventCoord ={
x: window.pageXOffset + e.clientX,
y: window.pageYOffset + e.clientY
};
var offset ={
offsetX: eventCoord.x - pageCoord.x,
offsetY: eventCoord.y - pageCoord.y
};
return offset;
}
function getPageCoord(element) {
var coord = {x: 0, y: 0};
while (element){
coord.x += element.offsetLeft;
coord.y += element.offsetTop;
element = element.offsetParent;
}
return coord;
}问题:当在mouseover中offsetX和getOffset(event)所得到的值却不同,应该怎么改呢?
function getOffset(e){
var target = e.target;
if(target.offsetLeft == undefined){
target = target.parentNode;
}
var pageCoord = getPageCoord(target);
var eventCoord ={
x: window.pageXOffset + e.clientX,
y: window.pageYOffset + e.clientY
};
var offset ={
offsetX: eventCoord.x - pageCoord.x,
offsetY: eventCoord.y - pageCoord.y
};
return offset;
}
function getPageCoord(element) {
var coord = {x: 0, y: 0};
while (element){
coord.x += element.offsetLeft;
coord.y += element.offsetTop;
element = element.offsetParent;
}
return coord;
}问题:当在mouseover中offsetX和getOffset(event)所得到的值却不同,应该怎么改呢?
if( evt.offsetX ) return evt.offsetX;
var ele = evt.target || evt.srcElement;
var o = ele;
var x=0;
while( o.offsetParent )
{
x += o.offsetLeft;
o=o.offsetParent;
}
// 处理当元素处于滚动之后的情况
var left = 0;
while( ele.parentNode )
{
left += ele.scrollLeft;
ele=ele.parentNode;
}
return evt.pageX + left - x;
}
<script>
function upNext(event){
var img = document.getElementById("imgId");
var lefturl = document.location;
var righturl = document.location;
var imgurl = righturl;
var width = (img.width==undefined) ? img.getAttribute("width") : img.width;
var x = (event.offsetX==undefined) ? getOffset(event).offsetX : event.offsetX; function move(){
img.style.cursor = '';
if(event.offsetX<width/2){
if(lefturl != ''){
if(window.attachEvent){
img.style.cursor = 'url(images/left.cur),auto';
}else{
img.setAttribute("style","cursor:url(images/left.cur),auto;");
}
}
}else{
if(righturl != ''){
if(window.attachEvent){
img.style.cursor = 'url(images/right.cur),auto';
}else{
img.setAttribute("style","cursor:url(images/right.cur),auto;");
}
}
}
}
function up(){
if(event.offsetX<width/2){
if(lefturl != ''){
top.location = lefturl;
}
}else{
if(righturl != ''){
top.location = righturl;
}
}
}
if(window.attachEvent){
img.attachEvent("onmousemove",move);
img.attachEvent("onmouseup",up);
}else{
img.addEventListener("mousemove",move,false);
img.addEventListener("mouseup",up,false);
}
} function getOffset(e){
var target = e.target;
if(target.offsetLeft == undefined){
target = target.parentNode;
}
var pageCoord = getPageCoord(target);
var eventCoord ={
x: window.pageXOffset + e.clientX,
y: window.pageYOffset + e.clientY
};
var offset ={
offsetX: eventCoord.x - pageCoord.x,
offsetY: eventCoord.y - pageCoord.y
};
return offset;
}
function getPageCoord(element) {
var coord = {x: 0, y: 0};
while (element){
coord.x += element.offsetLeft;
coord.y += element.offsetTop;
element = element.offsetParent;
}
return coord;
}
if(window.attachEvent){
document.getElementById("imgId").attachEvent("onmouseover",upNext);
}else{
document.getElementById("imgId").addEventListener("mouseover",upNext,false);
}
</script>
var evt = event || window.event;
var x = evt.clientX;
var y = evt.clientY;
}这个格式试试行不?
我试了还是不行的
这个属性只有position为relative或 absolute时才正确)
请问是给img设置position这个属性吗?