簡體   English   中英

SQLite 動態 WHERE 子句不起作用

[英]SQLite dynamic WHERE Clause not working

單擊搜索按鈕時,應該會出現一個表格,其中包含包含所選列表項名稱的所有記錄,但由於某種原因,它無法正常工作,因為該表格根本沒有出現。 有誰知道如何解決這一問題?

HTML

<!DOCTYPE html>
<html>

<head>
    <title>World</title>

    <meta name="viewport" content="width=default-width; user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1" />

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
</head>

<body onload="init()">
    <div data-role="page" id="myform">
        <div data-role="header">
            <h1>World</h1>
        </div>

        <div data-role="content">
            <form>
                <table cellpadding="2" cellspacing="2">
                    <tr>
                        <td>Continent</td>
                        <td>
                            <select id="continent" required>
                                <option value="Africa">Africa</option>
                                <option value="Antarctica">Antarctica</option>
                                <option value="Asia">Asia</option>
                                <option value="Europe">Europe</option>
                                <option value="North America">North America</option>
                                <option value="Oceania">Oceania</option>
                                <option value="South America">South America</option>
                            </select>
                        </td>
                    <td>
                        <input type="button" value="Search" class="btn-form" data-icon="search" onclick="search()">
                        </td>
                    </tr>
                </table>
            </form>

            <div id="result"></div>
    </div>
</body>

</html>

JavaScript

var db = openDatabase('helloworld', '1.0', 'World', 5 * 1024 * 1024);

function init() {
    "use strict";

    db.transaction(function (tx) {
        tx.executeSql('DROP TABLE continents');
        tx.executeSql('CREATE TABLE IF NOT EXISTS continents(id INTEGER PRIMARY KEY AUTOINCREMENT, continent TEXT)');


        //Record 1
        tx.executeSql('INSERT INTO continents(continent) values("Africa")');
        tx.executeSql('INSERT INTO continents(continent) values("Antarctica")');
        tx.executeSql('INSERT INTO continents(continent) values("Asia")');
        tx.executeSql('INSERT INTO continents(continent) values("North America")');
        tx.executeSql('INSERT INTO continents(continent) values("Oceania")');
        tx.executeSql('INSERT INTO continents(continent) values("South America")');        
    });
}

function search(id) {
    "use strict";

    db.transaction(function (tx) {
        tx.executeSql('SELECT * FROM continents WHERE continent = ?', [continent], function (tx, results) {
            var n = results.rows.length;
            var s = '<h2>Results</h2>';
            s += '<table cellpadding="3" cellspacing="3" border="1">'; 
            s += '<tr><th>ID</th><th>Continent</th></tr>';
            for (var i = 0; i < n; i++) {
                var work = results.rows.item(i);
                s += '<tr>';
                s += '<td>' + work.id + '</td>';
                s += '<td>' + work.continent + '</td>';
                s += '</tr>';
            }
            s += '</table>';
            document.getElementById('result').innerHTML = s;
        });
    });
}

正如@mu-is-too-short所說,您沒有定義在 where 子句中使用的 JavaScript 變量continent 另一點是搜索函數期望接收一個參數( id ),但在調用該函數時您不發送任何參數。 然而,最后一個現在無關緊要......

一種可能的解決方法是,在執行查詢之前,將所選選項保存在名為continent的 JavaScript 變量中,這樣您就不必更改大量代碼。

var continent = $('#continent').find(":selected").text();

就像這篇文章: jQuery Get Selected Option From Dropdown

此外,您還必須再關閉一個<div>

讓我知道這個是否奏效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM