无法通过JavaScript更改页面样式

无法通过JavaScript更改页面样式,javascript,css,styles,numbers,undefined,Javascript,Css,Styles,Numbers,Undefined,我遇到了一个问题,从我的脚本中获取一个值并在我的网站上进行更改。我试图做到的是,允许用户在我的页面上滚动某些元素,向左或向右滚动。请记住,我不太擅长JavaScript,所以这里是我到目前为止所做的 window.onload = makeActive; function makeActive() { var showCase = document.getElementById("showcase"); var slides = showCase.getElementsByTagName("di

我遇到了一个问题,从我的脚本中获取一个值并在我的网站上进行更改。我试图做到的是,允许用户在我的页面上滚动某些元素,向左或向右滚动。请记住,我不太擅长JavaScript,所以这里是我到目前为止所做的

window.onload = makeActive;
function makeActive() {
var showCase = document.getElementById("showcase");
var slides = showCase.getElementsByTagName("div");
var mouseDown = false;
if(window.addEventListener) {
    showCase.addEventListener('mousedown',startDrag,false);
    document.body.addEventListener('mousemove',drag,false);
    document.body.addEventListener('mouseup',stopDrag,false);
}
else if(window.attachEvent) {
    showCase.attachEvent('onmousedown',startDrag);
    document.body.attachEvent('onmousemove',drag);
    document.body.attachEvent('onmouseup',stopDrag);
}
function startDrag(e) {
    mouseDown = true;
}
function drag(e) {
    if(mouseDown == true) {
        for(var i=0; i < slides.length; i += 1) {
            slides[i].style.left -= e.clientX + "px";
        }
    }
}
function stopDrag(e) {
    mouseDown = false;
    }
}
window.onload=makeActive;
函数makeActive(){
var showCase=document.getElementById(“showCase”);
var slides=showCase.getElementsByTagName(“div”);
var mouseDown=false;
if(window.addEventListener){
showCase.addEventListener('mousedown',startDrag,false);
document.body.addEventListener('mousemove',drag,false);
document.body.addEventListener('mouseup',stopDrag,false);
}
else if(窗口附件){
showCase.attachEvent(“onmousedown”,startDrag);
document.body.attachEvent('onmousemove',拖动);
document.body.attachEvent('onmouseup',stopDrag);
}
功能启动图(e){
mouseDown=true;
}
函数拖动(e){
if(mouseDown==true){
对于(变量i=0;i
基本上,它会选择showCase元素中的所有div元素。它继续检查我的鼠标是否悬停在它上面,如果我是,它将检查我的鼠标是否按下,如果我的鼠标按钮按下,它将检查我的鼠标是否向左或向右移动。这一切都很好,但当我尝试循环浏览幻灯片时,当我尝试对幻灯片执行任何形式的等式时,会出现解析错误。我想这是因为当我尝试引用幻灯片[I].style.left时,它会以字符串的形式出现。我试着把它解析成一个数字形式
去掉角色,但这似乎不起作用。我还尝试使用“leftoffset”获取值,但无论我做什么,它都会给我一个错误,即“style.left未定义”、“NaN”或“parse error:declaration droped”。有更简单的方法吗?

我相信是这样的:

slides[i].style.left -= e.clientX + "px";
如果
幻灯片[i].style.left
的值类似于
10px
,则不能减去整数值。您需要先删除“px”:


您考虑过使用JQuery来简化这段代码吗?我不熟悉JQuery,但我目前正在研究它。是的,我知道这不是正确的公式,在这一点上,我只是想让它做点什么。谢谢你的帮助,我相信这会在理论上解决我的问题,但是我收到错误消息说“TypeError:slides[I].style.left.replaceAll不是一个函数”,我已经尝试过好几次了,以稍微不同的方式,但无论我如何使用任何正则表达式函数,我似乎都会得到一个类型错误。使用
替换
。我更新了答案。您还可以使用
幻灯片[i].style.left.toString().replace(…)
将其转换为字符串。谢谢!我很感谢你的帮助,这解决了我面临的核心问题,也就是改变左边位置的价值。我必须弄清楚为什么它会将值设置为-55000--60000。但这应该很容易,因为我可以更改周围的值。因此,请您接受这个答案,以便告诉未来的用户这个答案是正确的。谢谢:)
var leftPos = 0;
if(slides[i].style.left) {
    leftPos =  slides[i].style.left.toString().replace(/(px)/i, "");
}
slides[i].style.left = (leftPos - e.clientX) + "px";