私はcssセレクタを含むツリー構造を持っていますが、私の目標はセレクタと一致する入力要素から値を取り出してツリーに配置することです。たとえば、idテキストボックスと値67の<input type="text/>
がある場合、これを実行したいと思います。{selector: "#textbox"} - > {value:67}。javascript/typescriptが暗黙的に日付オブジェクトを文字列に変換するのはなぜですか?
入力タイプが日付の場合を除いて、私はこれをすべてのケースで使用できます。その場合、文字列を日付オブジェクトに変換したいと思います。私のコードは次のようになります
val = sel.val();
let type = sel.attr("type");
if(type == "number")
{
val = Number(val);
}
else
if(type == "date")
{
val = Date(val);
}
//#1
ast["value"] = val;
//#2
delete ast.selector;
ポイント1で、入力タイプが日付の場合、valはDateオブジェクトです。ポイント#2では、ast ["value"]/ast.valueもDateオブジェクトです。しかし、astオブジェクト全体を印刷すると、文字列としてast ["value"]/ast.valueが表示されます。この文字列値は残りのコードを伝播し、問題を引き起こします。これは、日付が暗黙的に変換取得されていない場合は、この
Wed Jul 27 2016 10:14:19 GMT-0600 (MDT) eval.js:249 //ast["value"] at point #2
Object {selector: "this", value: "Wed Jul 27 2016 10:14:19 GMT-0600 (MDT)"} eval.js:250 //ast at point #2
を示すコンソールからの引用で、出力は私がChromeとFirefoxの、両方の収率でこのコードをテストしてみた
Wed Jul 27 2016 10:14:19 GMT-0600 (MDT) eval.js:249 //ast["value"] at point #2
Object {selector: "this", value: Wed Jul 27 2016 10:14:19 GMT-0600 (MDT)} eval.js:250 //ast at point #2
だろう同じ結果。
本当に文字列ですか。いくつかのコンソール機能/ "機能"かもしれません。 –
いつでも日付にキャストすることができます。 'Date.prototype.toString' IIRCは実装に依存しますが、プラットフォームの独自の文字列表現からDateを構築している限り、上手くいくはずです。 –
日付ではない日付にキャストしないでください!それはちょうど道の下で缶を蹴っているだけです。 –