古いJavaScript計算機をレガシーサイトから新しいサイトに移植しようとしています。従来の計算機は、テーブル/divマークアップの混乱を含むフォームです。この計算機のすべてのロジックを処理するJSファイルは1つだけです。計算の各入力フィールドに入力すると、onChange()はJSファイルで定義された関数を呼び出します。これはすべて良いです。Chrome開発ツールにエラーが表示されることはなく、期待どおりの結果が得られます。
この計算機はマークアップの混乱であるため、不要な要素とインラインスタイルを削除して、より短い(マークアップの長さ)フォームを作成しました。問題は、新しいマークアップと同じレガシーJSファイルで電卓を使用しようとすると、機能しないことです。または、私はそれの約98%が機能しないと言うべきです。まだいくつかの数値を出力しているようですが、すべてではありません。古いマークアップに戻すとすぐに、再び機能します。
新しいマークアップを使用すると、「未定義のプロパティの長さを読み取れません」というメッセージが表示されます。一部のフィールドがJSに値を送信していることがわかっているため、これを修正する方法がわかりません。また、エラーが発生せず、古いhtml(以下のJSFiddleリンクに表示)を使用して計算が期待どおりに機能する理由もわかりません。
更新:ここに完全な例があります:http://machinesandwich.com/demo.html