3

コンマで区切られたデータでいっぱいの HTML ページがあり、各行は (br /) タグで終わります。Javascript では、データを含む要素の innerHTML を要求することで、DOM からこれを取得できます。

私の質問は、innerHTML を解析してコンマの間からデータを取得し、(br /) タグにヒットしたときに次の行から開始する方法です。

それが上記の私の質問であるため、残りはおそらく無視できます。

各行を解析するときに、新しいオブジェクトを開始し、データをそこに入れます。innerHTML をどうすればよいかわかりません。

私が見つけたCSVtoarray関数を介してデータを入れましたが、各行の配列の配列ではなく、1つの大きな配列の配列になりました。途中でデータからオブジェクトを作成するこの配列を処理できますが、データを直接オブジェクトに解析できる場合、innerHTML を単一の配列に変換することは不要な手順のように思えます。

データは AJAX 経由でそこに配置されます。データが入ってくるフォーマットを変更できます。先ほど言ったように、データをカンマで区切り、行末に (br /) タグを付けます。これがばかげているかどうかはわかりません。

4

3 に答える 3

2

したがって、 ?<br />の代わりに改行が示されているファイルをcsv解析する必要があります。\n次に、CSVパーサーでその区切り文字を使用します。シンプルバージョン:

text.split("<br />".map(function(line){ return line.split(","); })

次のような正規表現で分割することもできます

text.split(/\s*<br ?\/>\s*/)...

DOMでCSVデータを実際に使用している場合は、すべてのbr要素を削除し、残りの(テキスト)ノードをlines-arrayとして使用できます。

于 2012-05-10T17:17:34.083 に答える
1

「コンマの間からデータを取得する」だけの場合は、次のように簡単に実行できます。

yourElem.innerHTML = yourElem.innerHTML.split(",").join(""); 

または、単に行の配列が必要な場合:

var lines = yourElem.innerHTML.split(",");

<br>これにより、要素がそのままの行の配列が返されます。ただし、それがあなたの望むものかどうかは明らかではありません。

于 2012-05-10T17:22:43.177 に答える
1

あなたは、AJAX 経由で取得するデータを制御できると述べていますが、現在のアプローチが最善のアイデアではないことは間違いありません。まず第一に、HTML を自分で解析しようとしないでください。たとえ「単純」だと思っていてもinnerHTML、まったく同じコンテンツでもブラウザーが異なれば結果も異なります。代わりに、DOM を使用して探している情報を見つけてください。

つまり、ここでの正しいアプローチは、サーバーからJSONオブジェクトを返すことです。その後、データに直接アクセスできます。ほぼすべてのサーバー側言語には、JSON を出力するための何らかの機能があり、JavaScript は JSON 文字列をネイティブに解析できますJSON.parse()

サーバーから、以下を返します。

{items: [
    { id: 0, name: '...' },
    { id: 1, name: '...' },
    ...
]}

クライアント (jQuery を想定) では、

$.getJSON('/path-to-script/', function(d) {
    for (var i = 0; i < d.items.length; i++) {
        d.items[i].id;
    }
});

1 - 最新のブラウザ

于 2012-05-10T17:28:09.673 に答える