Javascript chrome中返回错误值的弹出函数
这段代码适用于firefox,控制台日志在firefox和chrome上都为我提供了正确的“位置”值。但是说到x.style.left,它给了我一个不同的值?例如,我的b.layerX-50是249,但当弹出窗口出现时,其左值是-37?Javascript chrome中返回错误值的弹出函数,javascript,google-chrome,Javascript,Google Chrome,这段代码适用于firefox,控制台日志在firefox和chrome上都为我提供了正确的“位置”值。但是说到x.style.left,它给了我一个不同的值?例如,我的b.layerX-50是249,但当弹出窗口出现时,其左值是-37? Jsfiddle:您能否提供一个Jsfiddle或为您的问题添加更多的代码,以便我们可以在上下文中看到它?尝试更改x.setAttribute('style','display:block')到x.style.display='block'并尝试确保位置为绝对:
Jsfiddle:您能否提供一个Jsfiddle或为您的问题添加更多的代码,以便我们可以在上下文中看到它?尝试更改
x.setAttribute('style','display:block')代码>到x.style.display='block'
并尝试确保位置为绝对:x.style.position='absolute'
。另外,我可以看到您已经在使用jQuery来调用“兄弟姐妹”,为什么不使用jQuery来完成所有工作呢?您的小提琴对我来说根本不起作用,即使在Firefox中也是如此。“a”参数是一个DIV的id,我看不到它里面的任何东西。@Buzinas我更新了链接,它现在应该可以工作了:)如果你在x.style.left中将b.layerX-50更改为“position”,它在chrome中可以正常工作。我不知道是什么原因导致了这个问题请尝试使用clientX而不是offsetX!
function popup(a, b) {
x = document.getElementById(a);
y = document.getElementById('ze-editor').offsetWidth;
if (x.style.display == 'none') {
position = (b.offsetX === undefined) ? b.layerX - 50 : b.offsetX - 50;
position = Number(position);
console.log(b.layerX - 50);
x.setAttribute('style', 'display: block');
if (position + x.offsetWidth + 20 > y) {
position = position - 40;
}
x.style.left = position + 'px';
} else {
x.style.display = 'none';
}
$('#' + a).siblings().hide();
};