SHOW:
|
|
- or go back to the newest paste.
| 1 | function update_value() {
| |
| 2 | //Вот тут ты создаёшь глобальную переменную. Чтобы она была локальной, есть var или let, если тебе можно в ES6 | |
| 3 | //Далее, когда ты вытаскиваешь значение из селекта, тебе не нужно фигачить такую кошмарную конструкцию. Достаточно | |
| 4 | // $('#parameter').val()
| |
| 5 | parameter = $("option:selected", $('#parameter')).val();
| |
| 6 | //Не знаю, идёшь ты с http или https, но если у тебя совпадает домен, можно было просто написать относительный URL: | |
| 7 | // $.get('/severity/value' + parameter)
| |
| 8 | $.get('https://' + window.location.hostname + '/severity/value/' + parameter).done(function(data) {
| |
| 9 | //Если ты хочешь в дальнейшем заменить всё содержимое, чистить его не обязательно - ниже уточню, почему | |
| 10 | $('#value').empty();
| |
| 11 | //Если то, что ты запрашиваешь, отдаёт честный json, то это можно не делать - jQuery парсит сама | |
| 12 | params = JSON.parse(data); | |
| 13 | //Строго говоря, в таких циклах надо ещё проверять, что ты имеешь дело со свойством объекта, а не его прототипа: | |
| 14 | // if(Object.hasOwnProperty(params, key)) | |
| 15 | // Я мог ошибиться в порядке переменнях, но название метода должно быть правильное. А вообще у большинства библиотек, | |
| 16 | // включая jQuery, есть методы для пробегания по таким объектам, которые это делают за тебя. | |
| 17 | for (var key in params){
| |
| 18 | // Когда ты работаешь с DOMом, хороший тон - делать минимум мутаций. Потому что они медленные. Поэтому | |
| 19 | // правильнее бы было сначала собрать всё вместе (в строку или DocumentFragment), и только потом вставлять. | |
| 20 | // Я бы здесь сделал длинную строку, а потом вне цикла сказал $('#value').html(длинная строка)
| |
| 21 | $('#value').append($('<option value="' + parameter + '/' + key + '">' + params[key] + '</option>'));
| |
| 22 | }; | |
| 23 | //Опять-таки, селект достаточно умный, чтобы понять $('#value').val(value того option'а, который должен быть выбран)
| |
| 24 | $('#value :first').attr("selected", "selected");
| |
| 25 | }); | |
| 26 | }; | |
| 27 | ||
| 28 | function update_parameter() {
| |
| 29 | component = $("option:selected", $('#component')).val();
| |
| 30 | $.get('https://' + window.location.hostname + '/severity/parameter/' + component).done(function(data) {
| |
| 31 | $('#parameter').empty();
| |
| 32 | params = JSON.parse(data); | |
| 33 | for (var key in params){
| |
| 34 | $('#parameter').append($('<option value="' + component + '/' + key + '">' + params[key] + '</option>'));
| |
| 35 | }; | |
| 36 | $('#parameter :first').attr("selected", "selected");
| |
| 37 | update_value(); | |
| 38 | }); | |
| 39 | }; | |
| 40 | ||
| 41 | // Обычно используют краткую форму: $(function(){ ... })
| |
| 42 | $(document).ready(function() {
| |
| 43 | $('#component').on('change', function (e) {
| |
| 44 | update_parameter(); | |
| 45 | }); | |
| 46 | $('#parameter').on('change', function (e) {
| |
| 47 | update_value(); | |
| 48 | }); | |
| 49 | update_parameter(); | |
| 50 | }); |