質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

jade

Jade(ジェイド)は、Hamlに影響を受けて開発されたJST(JavaScript Templates)のひとつです。Node.jsで動かすことができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

2571閲覧

Node.jsとHTML間でのcsv読み込みの互換性

KF_sys67_n

総合スコア20

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

jade

Jade(ジェイド)は、Hamlに影響を受けて開発されたJST(JavaScript Templates)のひとつです。Node.jsで動かすことができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/04/30 08:39

htmlファイルでできていたjavascriptの操作をjade内で同様に行いたいのですが、node.jsの設定の問題なのか同じようにできないでいます。
htmlファイルでは、

javascript

1function change2(){ 2 change(); 3 var chane=document.formA.test1.selectedIndex; 4 var x=document.getElementById("lay_ser"); 5 x.style.display=""; 6 /*この2行はz-index制御関係*/ 7 var num=[0,50,100,150,200,250,300,350,400,450,500]; 8 9/* ここからcsv読み込み */ 10 11function getCSVFile() { 12 var xhr = new XMLHttpRequest(); 13 xhr.onload = function() { 14 createArray(xhr.responseText); 15 }; 16 17 xhr.open("get", "main.csv", true); 18 xhr.send(null); 19} 20getCSVFile(); 21 22function createXMLHttpRequest() { 23 var XMLhttpObject = null; 24 XMLhttpObject = new XMLHttpRequest(); 25 return XMLhttpObject; 26} 27 28/* csv読み込みはここまで。ここからデータ制御 */ 29 30function createArray(csvData) { 31 var tempArray = csvData.split("\n"); 32 var csvArray = new Array(); 33 for(var i = num[chane]; i<num[chane+1]-1;i++){ 34 csvArray[i] = tempArray[i].split(","); 35 if(csvArray[i][0]>num[chane]){ 36 var ele = document.createElement('div'); 37 ele.className='ids'; 38 ele.id='id'+i; 39 ele.name='id'+i; 40 ele.innerHTML = '<p>貴団体はID:<a id="id_id_'+i+'">'+csvArray[i][1]+'</a> 団体名:<a id="id_kikaku_'+i+'">'+csvArray[i][2]+'</a>で、区分は'+csvArray[i][3]+'となります。 <input type="button" class="btn_ids" id="btn_id_'+i+'" value="選択"></p>'; 41 var p_obj = document.getElementById("kikakubox1"); 42 p_obj.appendChild(ele); 43 eval("function addition"+i+"(){var number=document.getElementById('id_id_"+i+"'); /*console.log(number.innerHTML);*/ var title=document.getElementById('id_kikaku_"+i+"'); /*console.log(title.innerHTML);*/ var el_1= document.createElement('div'); el_1.className='selected'; el_1.id='kikaku_id_1_"+i+"'; el_1.innerHTML = '<p>ID:'+number.innerHTML+' 団体名:'+title.innerHTML+'</p>';var d_obj = document.getElementById('checkbox1'); d_obj.appendChild(el_1); var el_2= document.createElement('div'); el_2.className='selected'; el_2.id='kikaku_id_2_"+i+"'; el_2.innerHTML = '<p>ID:'+number.innerHTML+' 団体名:'+title.innerHTML+'</p>'; var e_obj = document.getElementById('checkbox2'); e_obj.appendChild(el_2); var el_3= document.createElement('div'); el_3.className='selected'; el_3.id='kikaku_id_3_"+i+"'; el_3.innerHTML = '<p>ID:'+number.innerHTML+' 団体名:'+title.innerHTML+'</p>'; var f_obj = document.getElementById('checkbox3'); f_obj.appendChild(el_3); var Array"+i+"=[number.innerHTML,title.innerHTML]; vote.push(Array"+i+"); var box=document.getElementById('Arraybox'); box.innerHTML=vote; console.log(vote.length);}"); 44 eval('var Btn_id_'+i+' = document.getElementById("btn_id_'+i+'")'); 45 eval('Btn_id_'+i+'.addEventListener("click",addition'+i+')'); 46 } 47 } 48} 49}

というコードで(これはネット上でよく落ちてるやつですが…)読み込み+csvデータの出力を実行していたのですが、node.js内でやろうとするとcsvファイルが読み込まれないのです。
どなたか解決方法を教えていただけないでしょうか。宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「scriptタグ作ってベタ書きしていたJavaScriptを含む」HTMLをJadeにコンパイルしようとしたがうまくいかない
…という質問内容ですか?

Jade

1script. 2 function change2(){ 3 // ...以下略

こんな風にタグ名の後に.をつけてあげると、
以下インデントされた内容は全てただの文字列として内包されます。

投稿2016/04/30 08:45

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KF_sys67_n

2016/04/30 08:50

いえ、スクリプトそのものは別のファイルに入ってますし、読み込まれていることも確認済みです。ただその過程でcsvファイルが読み込まれないというところが問題なのです。
miyabi-sun

2016/04/30 09:43 編集

上記のJavaScriptをNode.jsにペタッと貼り付けたけど動かないってことなのですか? それだとJadeはどこで使われるのでしょうか?
KF_sys67_n

2016/04/30 09:54

jadeファイル(layout.jade)でjsの読み込みを書いているということです。紛らわしい書き方ですいません。
miyabi-sun

2016/04/30 10:14

うーん、なんとなくわかってきました。 HTML版:HTML生成→ブラウザ読み込む→Ajax通信でCSVを受け取る→「解析」 Jade版:node.jsでHTML出力中→Jadeテンプレートの箇所→どうせ鯖で動いてるんだからCSVここで動かしちゃえ→HTMLとして加工→ブラウザで解析した時に値がないよ? …こんな感じの流れですか? だとすればAjax(XMLHttpRequest)はブラウザに依存しているので、 Node.jsで動作させた時に動きません。 サーバーにあるならfs、httpリクエストを飛ばすならhttpモジュールがあるので、require("fs");などとして呼び出しましょう。 こんな感じでどうでしょう?
KF_sys67_n

2016/04/30 10:47

だいたいそんな感じの流れです! fsとかhttpモジュールについては殆ど知識がないので、差し支えなければ教えていただけると幸いです。取りあえずそれで試してみます! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問