Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.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
Javascript滑块问题_Javascript_Css_Nan_Parseint - Fatal编程技术网

Javascript滑块问题

Javascript滑块问题,javascript,css,nan,parseint,Javascript,Css,Nan,Parseint,嗨,我目前正在编写一个由我的老板给我的脚本,除了IE之外,它在所有浏览器中都不起作用 现在他正在使用CSS属性left来设置动画,这样他就有了一个变量来获取left的当前值。例如,假设left等于-100px 现在,一旦它有了这个值,它就在这个值上加上10px,使它从左边移入 现在我的问题在于parseInt和数字末尾的px前缀。它不断返回NaN而不是left的值 有人知道如何解决这个问题吗 提前谢谢 更新: 好的,我已经重写了代码,所谓重写,我的意思是我已经使用了我的BOSS代码,更改了变量名

嗨,我目前正在编写一个由我的老板给我的脚本,除了IE之外,它在所有浏览器中都不起作用

现在他正在使用CSS属性left来设置动画,这样他就有了一个变量来获取left的当前值。例如,假设left等于-100px

现在,一旦它有了这个值,它就在这个值上加上10px,使它从左边移入

现在我的问题在于parseInt和数字末尾的px前缀。它不断返回NaN而不是left的值

有人知道如何解决这个问题吗

提前谢谢

更新: 好的,我已经重写了代码,所谓重写,我的意思是我已经使用了我的BOSS代码,更改了变量名,并对其进行了注释,以便更容易理解和查看javascript试图实现的功能

现在,滑块的作用是使选定的DIV从左侧滑入,并在IE中以-760px的速度提供DIV,这很好,但在任何其他浏览器中都不行。不过,我已经为其他浏览器想出了一个解决方案。通过将样式表中的px从-760的末尾移除,它会导致DIV出现,但它不会按应有的方式滑动

为了方便起见,我将在这里为他们提供幻灯片html和CSS,以提供一些有用的帮助

试一试

try{
  w=parseInt(document.getElementById("slideDiv").style.left+"make me string");
}catch(e){
  w=0;
  alert(e.toString());
}

使用parseFloat而不是parseInt

您可以尝试以下方法:

// should return e.g. "10px":
var valueAsString = document.getElementById('slideDiv').style.left;

// remove "px" at the end, so w will only contain "10":
numericPartOfValue = value.substring(0, value.length - 2);
var w = parseInt(numericPartOfValue);

if(w < 0) { 
   w = w+10; 
   // Note: Updated after the comment below:
   document.getElementById(slideDiv).style.left =w + "px";
}

究竟是什么代码导致NaN?w=parseIntdocument.getElementByIdslideDiv.style.left; ifw@robf92:是否确实已显式设置.style.left?您可能还想使用.offsetLeft.Im不确定您明确表示的是什么意思。但是是的,它被设置为css左侧的默认值:-760px;将jquery添加到页面是一个选项吗?很难想象直接处理CSS位置的变化。我遇到的问题是,它没有得到元素的当前位置,因为它返回的是-760px,因为px不是整数。很抱歉,我一开始误读了,但是parseInt的工作是在字符串中查找一个数字,忽略字母字符。尝试此操作后,警报返回:TypeError:document.getElementByIdslideDiv为null@Tank啊好的,这是我第一次使用Javascript,我目前的职位是一家软件开发公司的学徒,所以是的,这让我很困惑atm:D错误是说slideDiv不存在。这可能是因为slideDiv尚未加载。查看jQuery和$document.readyfunction{…};在运行代码之前,等待html被加载。确保代码被加载的快速而肮脏的方法是,在我刚刚尝试警告parseFloat-170px之前,将javascript代码一直放在页面底部;在我的控制台上,它工作得很好。document.getElementByIdslideDiv.style.left的实际值是多少?因为我不认为这是正确的。谢谢,但在IE中使用它也会破坏它。为什么Javascript会如此麻烦?D:我只是想发布整个javascript文件。正如我所说,这是我老板写的,不是我写的。我的Javascript知识相当基础,目前我发现,从CSS文件中删除px会使其正常工作,滑块会发生变化,但如果没有动画中的幻灯片,我还要感谢大家迄今为止的帮助,你们都是伟大的人,我非常感激。谢谢大家:如果我正确理解您的问题,那么我刚才所做的更改应该可以解决它。请参阅代码注释:在处理完数值后,只需再次将px添加到末尾。不,仍然不起作用,我说不起作用,即现在将动画设置为整个过程的1/7,然后它就停止了,而且所有其他浏览器仍然不能工作,谢谢。如果我们能看到这应该是如何工作的,可能会更容易帮助你。也许你也可以提供一些HTML?很抱歉,我离开了工作,完全忘记了这一点。那么您需要什么HTML呢?只是那些被滑动的潜水艇?另外,当我想到它的时候,我认为它必须与slideDiv有关,正如其他人所说,parseInto应该删除px,并且在测试它时,它是正确的。我还认为这与使用zIndex而不是z-index有关,因为我在某个地方读到,它可能会导致其他浏览器出现问题,但一旦改变,它在firefox和IE中都会中断,因此我怀疑slideDiv。