javascript 中的保证金条件
Margin condition in javascript
我正在尝试通过更改 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 默认情况下没有反应)。
您必须将边距的逻辑包装到一个函数中,然后在每次单击按钮时检查边距值。
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。但这对这项任务来说可能有点矫枉过正。
它不起作用的原因是我在单击按钮时没有检查边距。
我更改了我的代码如下:
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 = "0px";
function check() {
if (slider.style.marginLeft == "0px") {
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";
}
}
window.onload = check(); // Check the margins when the page is loaded
nextBtn.onclick = function() {
slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) - slideWidth) + 'px';
check();
}
prevBtn.onclick = function() {
slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) + slideWidth) + 'px';
check();
}
- 将保证金逻辑包装在
check()
函数中
- 在页面加载和每次单击按钮时检查此功能
感谢 Gustavo 的宝贵帮助!
我正在尝试通过更改 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 默认情况下没有反应)。
您必须将边距的逻辑包装到一个函数中,然后在每次单击按钮时检查边距值。
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。但这对这项任务来说可能有点矫枉过正。
它不起作用的原因是我在单击按钮时没有检查边距。 我更改了我的代码如下:
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 = "0px";
function check() {
if (slider.style.marginLeft == "0px") {
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";
}
}
window.onload = check(); // Check the margins when the page is loaded
nextBtn.onclick = function() {
slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) - slideWidth) + 'px';
check();
}
prevBtn.onclick = function() {
slider.style.marginLeft = (parseInt(slider.style.marginLeft, 0) + slideWidth) + 'px';
check();
}
- 将保证金逻辑包装在
check()
函数中 - 在页面加载和每次单击按钮时检查此功能
感谢 Gustavo 的宝贵帮助!