Я пытаюсь получить значения двух входов ползунка, чтобы изменить изображение над ползунком. Например, если значение ползунка 1 равно 10, а значение ползунка 2 равно 80, изображение изменится.
Мне удалось завершить это с помощью одного ползунка, однако при попытке использовать два ползунка это, кажется, испортилось. Ниже приведен код решения с одним слайдером.
P.s Слайдер брал с w3school по ссылке. https://www.w3schools.com/howto/howto_js_rangeslider.asp
Спасибо за прочтение,
var fatslider = document.getElementById("myRange1");
var fatoutput = document.getElementById("demo1");
fatoutput.innerHTML = fatslider.value; // Display the default slider value
// Update the current slider value (each time you drag the slider handle)
fatslider.oninput = function() {
fatoutput.innerHTML = this.value;
if (this.value == 0){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat01muscle01.png";;
} else if (this.value == 5){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat02muscle01.png";;
} else if (this.value == 10){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat03muscle01.png";;
} else if (this.value == 15){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat04muscle01.png";;
} else if (this.value == 20){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat05muscle01.png";;
} else if (this.value == 25){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat06muscle01.png";;
} else if (this.value == 30){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat08muscle01.png";;
} else if (this.value == 35){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat09muscle01.png";;
} else if (this.value == 40){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat10muscle01.png";;
} else if (this.value == 45){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat11muscle01.png";;
} else if (this.value == 50){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat12muscle01.png";;
} else if (this.value == 55){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat13muscle01.png";;
} else if (this.value == 60){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat14muscle01.png";;
} else if (this.value == 65){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat15muscle01.png";;
} else if (this.value == 70){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat16muscle01.png";;
} else if (this.value == 75){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat17muscle01.png";;
} else if (this.value == 80){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat18muscle01.png";;
} else if (this.value == 85){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat19muscle01.png";;
} else if (this.value == 90){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat20muscle01.png";;
} else if (this.value == 95){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat21muscle01.png";;
} else if (this.value == 100){
document.getElementById("quiz-q1-current-bodytype-image").src = "images/bodytype/fat22muscle01.png";;
}
}.fat-slidecontainer {
width: 100%; /* Width of the outside container */
}
/* The slider itself */
.fat-slider {
-webkit-appearance: none; /* Override default CSS styles */
appearance: none;
width: 100%; /* Full-width */
height: 25px; /* Specified height */
background: #d3d3d3; /* Grey background */
outline: none; /* Remove outline */
opacity: 0.7; /* Set transparency (for mouse-over effects on hover) */
-webkit-transition: .2s; /* 0.2 seconds transition on hover */
transition: opacity .2s;
}
/* Mouse-over effects */
.fat-slider:hover {
opacity: 1; /* Fully shown on mouse-over */
}
/* The slider handle (use -webkit- (Chrome, Opera, Safari, Edge) and -moz-
(Firefox) to override default look) */
.fat-slider::-webkit-slider-thumb {
-webkit-appearance: none; /* Override default look */
appearance: none;
width: 25px; /* Set a specific slider handle width */
height: 25px; /* Slider handle height */
background: #4CAF50; /* Green background */
cursor: pointer; /* Cursor on hover */
}
.fat-slider::-moz-range-thumb {
width: 25px; /* Set a specific slider handle width */
height: 25px; /* Slider handle height */
background: #4CAF50; /* Green background */
cursor: pointer; /* Cursor on hover */
}
.fat-slidecontainer {
width: 100%; /* Width of the outside container */
}
/* The slider itself */
.muscle-slider {
-webkit-appearance: none; /* Override default CSS styles */
appearance: none;
width: 100%; /* Full-width */
height: 25px; /* Specified height */
background: #d3d3d3; /* Grey background */
outline: none; /* Remove outline */
opacity: 0.7; /* Set transparency (for mouse-over effects on hover) */
-webkit-transition: .2s; /* 0.2 seconds transition on hover */
transition: opacity .2s;
}
/* Mouse-over effects */
.muscle-slider:hover {
opacity: 1; /* Fully shown on mouse-over */
}
/* The slider handle (use -webkit- (Chrome, Opera, Safari, Edge) and -moz-
(Firefox) to override default look) */
.muscle-slider::-webkit-slider-thumb {
-webkit-appearance: none; /* Override default look */
appearance: none;
width: 25px; /* Set a specific slider handle width */
height: 25px; /* Slider handle height */
background: #4CAF50; /* Green background */
cursor: pointer; /* Cursor on hover */
}
.muscle-slider::-moz-range-thumb {
width: 25px; /* Set a specific slider handle width */
height: 25px; /* Slider handle height */
background: #4CAF50; /* Green background */
cursor: pointer; /* Cursor on hover */
}<center>
<img src = "images/bodytype/fat10muscle01.png" id = "quiz-q1-current-bodytype-image">
<p>Select Fat Level</p>
<div class = "fat-slidecontainer">
<input type = "range" min = "1" max = "100" value = "50" class = "fat-slider" id = "myRange1">
<p>Value: <span id = "demo1"></span></p>
</div>Привет, извините, если я не понял, я хочу два входа слайдера. В проекте, который я делаю, есть ползунок жира и ползунок мышц, диаграмма/изображение выше должны увеличивать/уменьшать жир, увеличивать/уменьшать мышцы и увеличивать/уменьшать и то, и другое. Я понятия не имею, почему он не работает, он делает самые случайные вещи.
Хорошо, теперь я понимаю ваши основные проблемы. Можете ли вы создать JSFiddle, чтобы мы могли увидеть, как он терпит неудачу?
Привет, оказывается, я сделал простую ошибку, не добавив закрывающую фигурную скобку, теперь я не уверен, как исправить оператор IF, чтобы включить обе функции, вот ссылка на jsfiddle - jsfiddle.net/x297sq6v



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Сначала вам нужно убедиться, что ваши ценности находятся в гармонии с вашими ожиданиями. Поскольку ваш код предназначен для поддержки значений 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100. Чтобы для этого минимальное значение должно быть 5, максимальное значение должно быть 100, а шаг должен быть 5:
<center>
<img src = "images/bodytype/fat10muscle01.png" id = "quiz-q1-current-bodytype-image">
<p>Select Fat Level</p>
<div class = "fat-slidecontainer">
<input type = "range" min = "5" max = "100" value = "50" class = "fat-slider" id = "myRange1" step = "5">
<p>Value: <span id = "demo1"></span></p>
</div>
<p>Select Muscle Level</p>
<div class = "muscle-slidecontainer">
<input type = "range" min = "5" max = "100" value = "50" class = "muscle-slider" id = "myRange2" step = "5">
<p>Value: <span id = "demo2"></span></p>
</div>
</center>
Теперь давайте исправим Javascript:
var fatslider = document.getElementById("myRange1");
var fatoutput = document.getElementById("demo1");
fatoutput.innerHTML = fatslider.value; // Display the default slider value
var muscleslider = document.getElementById("myRange2");
var muscleoutput = document.getElementById("demo2");
muscleoutput.innerHTML = muscleslider.value; // Display the default slider value
var mapSliderToPicture = {
"0": "01",
"5": "01",
"10": "02",
"15": "03",
"20": "04",
"25": "05",
"30": "06",
"35": "07",
"40": "08",
"45": "09",
"50": "10",
"55": "11",
"60": "12",
"65": "13",
"70": "14",
"75": "15",
"80": "16",
"85": "17",
"90": "18",
"95": "19",
"100": "20",
};
function updateImage(fat, muscle) {
console.info(document.getElementById("quiz-q1-current-bodytype-image").src = `images/bodytype/fat${mapSliderToPicture[fat]}muscle${mapSliderToPicture[muscle]}.png`);
}
muscleslider.oninput = function() {
updateImage(parseInt(document.getElementById("myRange1").value), parseInt(muscleoutput.innerHTML = this.value));
}
fatslider.oninput = function() {
updateImage(parseInt(fatoutput.innerHTML = this.value), parseInt(document.getElementById("myRange2").value));
}
Пояснение по пунктам:
oninput для обоих ползунков, вызывающих одну и ту же функцию и передающих правильные параметры.JSFiddle: https://jsfiddle.net/0cb6hmfs/1/
@JasonSingh, добро пожаловать. Если этот ответ решил вашу проблему, вы можете принять его как правильный ответ.
Как я могу это сделать?
@JasonSingh под номером слева от этого ответа есть белый флажок, нажав на который, вы можете принять ответ. stackoverflow.com/help/someone-answers
Вам нужно объяснить, чего вы хотите достичь и как это испортилось.