Список раскрывающегося меню из таблицы базы данных sqlite

Я пытаюсь получить данные из таблицы базы данных sqlite для подачи в мой список раскрывающегося меню. Смотрите мои мысли ниже. Проблема в том, что я не знаю, как совместить JS-функцию с HTML-частью.

HTML.html

    <label for = "name"><b>Activity Name:/b></label>          
    <select name = "activity" id = "activity" required>
        <option value = "">--Select--</option>
        getActivity()
    </select>

JS.js

    function getActivity(tx) {
            tx.executeSql('SELECT * FROM tblactivity', [], queryActivity, errorHandler);
                function queryActivity(tx, results) {
            var len = results.rows.length;
            for (var i = 0; i < len; i++) {
               var SelectActivity +='<option value = "' + results.rows.item(i).activityID +'">'+ results.rows.item(i).ActivityName +'</Option>';
            }
            //SelectActivity + = "</Option";
            document.getElementById("activity").innerHTML =SelectActivity;
        }}

В качестве альтернативы в HTML.html, включая функцию, например

    <label for = "name"><b>Activity Name:/b></label>          
    <select name = "activity" id = "activity" required>
    <script>
        function getActivity(tx) {
            tx.executeSql('SELECT * FROM tblactivity', [], queryActivity, errorHandler);
                function queryActivity(tx, results) {
            var len = results.rows.length;
            for (var i = 0; i < len; i++) {
               var SelectActivity +='<option value = "' + results.rows.item(i).activityID +'">'+ results.rows.item(i).ActivityName +'</Option>';
            }
            //SelectActivity + = "</Option";
            document.getElementById("activity").innerHTML =SelectActivity;
        }}
    </script>
    </select>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
870
1

Ответы 1

Если вы хотите заполнить параметры при загрузке, я бы рекомендовал обернуть ваши js в

$(document).ready(function() {
    //your function
});

Таким образом, он будет работать после загрузки HTML, и вам не нужно ничего делать на стороне HTML (это означает, что вы должны удалить вызов своей функции).

EDIT: это решение JQuery, если вы хотите использовать чистый подход JS:

window.onload = function() {
    //your function
};

Имейте в виду, что этот загрузит все перед запуском, например изображения и другие медиа; при более медленных соединениях пользователи могут видеть пустой выбор перед загрузкой.

ИЗМЕНИТЬ (после комментариев): Пожалуйста, проверьте эту скрипку: https://jsfiddle.net/chn1oL8m/5/ Думаю, теперь я понял вашу проблему, и это поможет вам, просто нужно использовать запрос вместо случайных значений (очевидно, у меня нет доступа к БД =])

Я уже включил функции загрузки в расширенном коде (оставленный код). Вопрос ясен в том, что я ищу, но спасибо!

mountain 07.04.2018 11:41

Привет, @mountain, мне что-то не хватает, но если это не то, что вы ищете, я не понял, что это такое. Не могли бы вы объяснить это по-другому, может быть, я смогу вам помочь.

Bruno Teixeira 07.04.2018 11:42

Ваша попытка не предполагает реализации решения. И JS, и HTML не работают, это просто руководство по реализации.

mountain 07.04.2018 11:44

Я снова отредактировал ответ, надеюсь, теперь он у вас заработает!

Bruno Teixeira 07.04.2018 11:54

Посмотрел, все равно логин плохой. Решение должно начинаться с функции getActivity (tx) {tx.executeSql ('SELECT * FROM tblactivity', [], queryActivity, errorHandler); функция queryActivity (tx, results) {var len = results.rows.length; for (var i = 0; i <len; i ++) {var activity + = '<option value = "' + results.rows.item (i) .activityID + '">' + results.rows.item (i) .ActivityName + '</Option>'; }}} Если я получу хотя бы часть JS

mountain 07.04.2018 13:55

window.onload = function () {db.transaction (function (tx) {Squery = 'SELECT * FROM tblactivity'; tx.executeSql (Squery, null, function (tx, results) {var select = document.getElementById ('activity '); var len = results.rows.length; for (var i = 0; i <len; i ++) {row = results.rows.item (i); var ID = row [' activityID ']; var Name = row ['ActivityName']; var opt = document.createElement ('option'); opt.value = ID; opt.innerHTML = Name; select.appendChild (opt);}});}); };

mountain 04.11.2018 15:51

все еще не могу заставить его работать. Посмотрите комментарий выше и посмотрите, что мы можем улучшить. В вашем jsfiddle есть пустой список выбора.

mountain 04.11.2018 15:52

Другие вопросы по теме