[解決済み] ko.applyBindingsの呼び出し時に「Cannot read property 'nodeType' of null」を取得する。
2022-12-06 08:02:39
質問
このようなノックアウトのコードがあります。
function Task(data) {
this.title = ko.observable(data.title);
this.isDone = ko.observable(data.isDone);
}
function TaskListViewModel() {
// Data
var self = this;
self.tasks = ko.observableArray([]);
self.newTaskText = ko.observable();
self.incompleteTasks = ko.computed(function() {
return ko.utils.arrayFilter(self.tasks(), function(task) { return !task.isDone() });
});
// Operations
self.addTask = function() {
self.tasks.push(new Task({ title: this.newTaskText() }));
self.newTaskText("");
};
self.removeTask = function(task) { self.tasks.remove(task) };
}
ko.applyBindings(new TaskListViewModel());
このhtml。
<head>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="knockout-2.0.0.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h3>Tasks</h3>
<form data-bind="submit: addTask">
Add task: <input data-bind="value: newTaskText" placeholder="What needs to be done?" />
<button type="submit">Add</button>
</form>
<ul data-bind="foreach: tasks, visible: tasks().length > 0">
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, disable: isDone" />
<a href="#" data-bind="click: $parent.removeTask">Delete</a>
</li>
</ul>
You have <b data-bind="text: incompleteTasks().length"> </b> incomplete task(s)
<span data-bind="visible: incompleteTasks().length == 0"> - it's beer time!</span>
</body>
Knockoutのサイトにあるサンプルと同じですが、実行するとChrome Fire Bugでこのようなメッセージが返されます。
Uncaught TypeError: nullのプロパティ 'nodeType' を読み取ることができません。
これはノックアウトファイルと私のスクリプトのこの行に関連しています。
ko.applyBindings(new TaskListViewModel());
そしてこのエラーはノックアウトのこの行(1766)を指しています。
var isElement = (nodeVerified.nodeType == 1);
私は何を間違えているのでしょうか?
どうすればいいのでしょうか?
この問題が発生したのは、私が
HTML
要素が作成される前にバインドしようとしたためです。
私のスクリプトは
HTML
(head内) にロードされていましたが、私の
HTML
のコードの一番下 (body タグを閉じる直前) に読み込む必要がありました。
ご清聴ありがとうございました ジェームズ・アラーダイス .
可能な回避策は
defer="defer"
<script src="script.js" type="text/javascript" defer="defer"></script>
スクリプトがドキュメントコンテンツを生成しない場合に使用します。これは、スクリプトをロードする前にコンテンツがロードされるのを待つことができることをブラウザに伝えます。
さらなる読み物 .
お役に立てれば幸いです。
関連
-
[解決済み] null のプロパティ 'addEventListener' を読み取ることができません。
-
[解決済み] 入力フィールドから属性を読み込むと、HTMLエンコーディングが失われる
-
[解決済み] React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】Google MAP API Uncaught TypeError: nullのプロパティ'offsetWidth'を読み取れませんでした。
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] Node.jsのES6クラスをrequireで作る
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] ECMAScriptとは?
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)