26.09.2018, 13:17
|
Новичок на форуме
|
|
Регистрация: 03.09.2018
Сообщений: 3
|
|
А нельзя ли передавать выбор Select в функцию без AJAX?
Представим, есть Select, в котором выбираем позицию, которая служит параметром для некой функции.
Чтобы эта функция сработала сразу, поймав этот параметр, а не после перезагрузки страницы, без AJAХ никак не обойтись?
Существуют ли альтернативы?
|
|
26.09.2018, 13:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Х3 кто
|
поймав этот параметр
|
Функции не ловят параметры, а принимают, которые им передаются. Иначе речь будет идти об обработчике события.
Сообщение от Х3 кто
|
а не после перезагрузки страницы
|
Это вообще умом не понять, о чем тут речь?
|
|
26.09.2018, 14:31
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 642
|
|
можно, но данные должны быть в "скрипте"
<html>
<head>
<title>Related</title>
</head>
<body>
<select id="select">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div id="related"></div>
</body>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {
const select = document.getElementById('select')
const related = document.getElementById('related')
const values = {
1: { title: 'one' },
2: { title: 'two' },
3: { title: 'three' },
}
function foo(id) {
return values[id].title
}
setHTML = (id) => related.innerHTML = foo(id)
select.addEventListener('change', function (e) {
setHTML(e.target.options[e.target.options.selectedIndex].value)
})
setHTML(select.options[select.options.selectedIndex].value)
})
</script>
</html>
Последний раз редактировалось SuperZen, 26.09.2018 в 15:36.
|
|
26.09.2018, 14:36
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
SuperZen,
добавьте пожалуйста параметр run для запуска примера
[HTML run][/HTML]
|
|
26.09.2018, 15:01
|
Новичок на форуме
|
|
Регистрация: 03.09.2018
Сообщений: 3
|
|
Вот здесь то, что я склепал
Благодарю за интерес к моей теме.
Вот здесь то, что я склепал:
http://bushastry.my1.ru/perem05ch.html
После выбора параметра – сообщение о выборе нового параметра.
Однако, карта-то не перекрашивается пока.
А вот если нажать иконку “Обновить текущую страницу” (речь идет о FireFox), то всё отражается как надо.
Но ведь это не годится!
Как же добиться работы по-человечески?
|
|
26.09.2018, 15:56
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Х3 кто,
продублируйте строки
var pok=sel.options[sel.selectedIndex].value;
var namepok=sel.options[sel.selectedIndex].text;
в
$('.map g').mouseover(function (e) {
var region_data=$(this).data('region');
var pok=sel.options[sel.selectedIndex].value;
var namepok=sel.options[sel.selectedIndex].text;
|
|
26.09.2018, 15:57
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 642
|
|
|
|
26.09.2018, 16:03
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
по change надо не только pok и namepok менять, но красить блоки заново
|
|
26.09.2018, 16:34
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Х3 кто,
вариант ... замените весь код на это
$(function() {
$("#test").change(function() {
var pok = this.value;
var namepok = this.options[this.selectedIndex].text;
var temp_array = regions.map(function(item) {
return item[pok]
});
var highest_value = Math.max.apply(Math, temp_array);
regions.forEach(function(el) {
var title = el.region_name + "<br>" + namepok + " " + el[pok];
$("#" + el.region_code).css({
"fill": "rgba(0,255,100," + el[pok] / highest_value + ")"
}).data("title", title)
})
}).change();
var info_panel = $('<div class="info_panel">').appendTo("body").hide();
$(".map").on("mouseenter", "g",
function(e) {
var title = $(this).data("title");
info_panel.html(title).show()
})
.mouseleave(function() {
info_panel.hide()
})
.mousemove(function(e) {
var mouseX = e.pageX,
mouseY = e.pageY;
info_panel.css({
top: mouseY - 50,
left: mouseX - info_panel.width() / 2
})
})
});
|
|
28.09.2018, 08:08
|
Новичок на форуме
|
|
Регистрация: 03.09.2018
Сообщений: 3
|
|
всё заработало как надо в FireFox и Chrome
Я немедленно проверил подходы, предлагаемые уважаемыми SuperZen'ом и Рони.
Ещё позавчера.
И почтительно поцокал языком, поскольку действительно всё заработало как надо.
Суда по скорости ответов, все эти подходы уже отработаны и широко известны в кругах HTML/JS/CSS-гуру.
Всё хорошо работает в FireFox и Chrome.
А вот IE не отрисовывает карту вообще.
IE действительно не умеет этого делать?
|
|
|
|