为什么 ForerunnerDB 找不到我的标签?
Why doesn't ForerunnerDB finds my tag?
我有以下设置:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Barebones todo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="./js/dist/fdb-all.min.js" type="text/javascript"></script>
<script src="./js/dist/fdb-autobind.min.js" type="text/javascript"></script>
<script src="scrypt.js" type="text/javascript"></script>
<script id="myLinkFragment" type="text/x-jsrender">
<li data-link="id{:_id}">{^{:name}}</li>
</script>
</head>
<body>
<form onsubmit="addGoal(); return false;">
<label for="goalinput">Enter goal:</label>
<input type="text" id="goalinput">
<input type="submit">
</form>
<button type="button" onclick="retrieve()">Retrieve</button>
<div id="p"></div>
<ul id="myList">
</ul>
</body>
</html>
和我的 scrypt.js 文件:
var fdb = new ForerunnerDB();
var db = fdb.db("myDatabaseName");
var goalCollection = db.collection("goal");
function addGoal() {
console.log("addig goal...");
var newgoalname = document.getElementById("goalinput").value;
console.log(newgoalname);
goalCollection.insert({
name: newgoalname,
order: 99
});
};
function retrieve() {
var findings = goalCollection.find({});
console.log(findings);
document.getElementById("p").innerHTML = findings;
}
goalCollection.link("#myList", "#myLinkFragment");
然后我收到错误提示:
fdb-autobind.min.js:1 Uncaught ForerunnerDB [Collection]goal Cannot bind collection to target selector "#myList" because it does not exist in the DOM!
我不太明白这个问题,因为很明显有一个 UL 标签,其 ID 为 myList。
我想也许 jquery 没有被正确调用,但我使用了记录的方式,所以这应该不是问题。我不知道是什么导致了这个问题。
集合无法绑定的原因是脚本在 DOM 加载之前执行。
您需要移动标签:
<script src="scrypt.js" type="text/javascript"></script>
从 head 标签到 body 标签的结尾。
这将确保 DOM 在您的脚本执行之前存在。
来源:我是ForerunnerDB的开发者
我有以下设置:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Barebones todo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="./js/dist/fdb-all.min.js" type="text/javascript"></script>
<script src="./js/dist/fdb-autobind.min.js" type="text/javascript"></script>
<script src="scrypt.js" type="text/javascript"></script>
<script id="myLinkFragment" type="text/x-jsrender">
<li data-link="id{:_id}">{^{:name}}</li>
</script>
</head>
<body>
<form onsubmit="addGoal(); return false;">
<label for="goalinput">Enter goal:</label>
<input type="text" id="goalinput">
<input type="submit">
</form>
<button type="button" onclick="retrieve()">Retrieve</button>
<div id="p"></div>
<ul id="myList">
</ul>
</body>
</html>
和我的 scrypt.js 文件:
var fdb = new ForerunnerDB();
var db = fdb.db("myDatabaseName");
var goalCollection = db.collection("goal");
function addGoal() {
console.log("addig goal...");
var newgoalname = document.getElementById("goalinput").value;
console.log(newgoalname);
goalCollection.insert({
name: newgoalname,
order: 99
});
};
function retrieve() {
var findings = goalCollection.find({});
console.log(findings);
document.getElementById("p").innerHTML = findings;
}
goalCollection.link("#myList", "#myLinkFragment");
然后我收到错误提示:
fdb-autobind.min.js:1 Uncaught ForerunnerDB [Collection]goal Cannot bind collection to target selector "#myList" because it does not exist in the DOM!
我不太明白这个问题,因为很明显有一个 UL 标签,其 ID 为 myList。 我想也许 jquery 没有被正确调用,但我使用了记录的方式,所以这应该不是问题。我不知道是什么导致了这个问题。
集合无法绑定的原因是脚本在 DOM 加载之前执行。
您需要移动标签:
<script src="scrypt.js" type="text/javascript"></script>
从 head 标签到 body 标签的结尾。
这将确保 DOM 在您的脚本执行之前存在。
来源:我是ForerunnerDB的开发者