javascript - javascript中的 margin 条件

标签 javascript if-statement conditional-statements

我正在尝试通过更改我的 CSS 中的边距来构建一个非常有效的幻灯片。 到目前为止它运行良好,但我希望下一个和上一个按钮在边距具有一定值时消失,但我找不到解决方案。

这是我的js代码:

const nextBtn = document.querySelector('#slideNext');
const prevBtn = document.querySelector('#slidePrev');
const slider = document.querySelector('.boxes-container');
const slideWidth = 250;

// Slider initial margin
slider.style.marginLeft = "0";

nextBtn.onclick = function() {
  slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) - slideWidth) + 'px';
}

prevBtn.onclick = function() {
  slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) + slideWidth) + 'px';
}

if (slider.style.marginLeft == "0") {
  prevBtn.style.display = "none";
} else if (slider.style.marginLeft == "-1000px") {
  nextBtn.style.display = "none";
} else {
  nextBtn.style.display = "inline-block";
  prevBtn.style.display = "inline-block";
}

我的问题在最后一部分:我不知道如何处理 if/else 语句,该语句会在边距达到特定值时修改我的按钮的显示。

如果有人能给我指出正确的方向,那就太棒了,因为我花了一些时间尝试自己解决这个问题,但找不到正确的解决方案。

感谢您的帮助!

最佳答案

您正确地创建了逻辑。问题是每次单击按钮时您都不会检查边距(默认情况下 javascript 不是响应式(Reactive)的)。

您必须将边距的逻辑包装到一个函数中,然后在每次单击按钮时检查边距值。

const nextBtn = document.querySelector('#slideNext');
const prevBtn = document.querySelector('#slidePrev');
const slider = document.querySelector('.boxes-container');
const slideWidth = 250;

// Slider initial margin
slider.style.marginLeft = "0";

nextBtn.onclick = function() {
  slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) - slideWidth) + 'px';
  checkMargin();
}

prevBtn.onclick = function() {
  slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) + slideWidth) + 'px';
  checkMargin();
}

function checkMargin() {
    if (slider.style.marginLeft == "0") {
      prevBtn.style.display = "none";
    } else if (slider.style.marginLeft == "-1000px") {
      nextBtn.style.display = "none";
    } else {
      nextBtn.style.display = "inline-block";
      prevBtn.style.display = "inline-block";
    }
}

还有其他方法可以使 DOM 具有响应性,例如 MutationObserver .但这对这项任务来说可能有点矫枉过正。

关于javascript - javascript中的 margin 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53255234/

相关文章:

javascript - 为什么我的 Netbeans 8 javascript 自动完成功能在我的 AngularJS 项目中不起作用?

javascript - 我无法在 heroku 中使用 puppeteer 进行截图

javascript - RegEx 不适用于我的 jQuery

C 编程 - 循环直到用户输入数字 scanf

javascript - Angular Js ng-style 条件评估 px

javascript - 当同时播放两个音频文件时,启动其中一个静音的音频文件

javascript - 我正在尝试检测 div 是否包含 iFrame

r - 在 R 中对多行进行分组过滤

c - 在C语言中,当需要将函数或逻辑条件的参数分成多行时,是否需要反斜杠字符(\)?

c - 结构中的默认值