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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1028閲覧

JavaScript 検索フレーム

t.o_325

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/06/13 01:59

編集2019/06/13 02:45

前提・実現したいこと

HTML CSS JavaScript にてcsvデータをマスターにして入力した内容を紹介して,表示するプログラムを作成しています。

全体像としては,ページを読み込んだ時にcsvを読み込んで配列として持ちます。
その後HTMLのテキスト内容やチェックボックスの選択によって,配列から適合するデータの通し番号を表示またはリンクできる形したいと考えています。指定がない場合は,通し番号が全て表示されるようにしたいです。

その後,その通し番号をクリックまたは,リンクをクリックした際に,詳細情報を配列から取出し,指定場所に表示していきたいと思っています。
使用環境はIE11です。

エラーメッセージ 現状では,csvを読み込むところまではできましたが,通し番号を表示するがうまくで来ていない状態です。

該当のソースコード

JavaScripy

1{ 2 "use strict"; 3 4 window.addEventListener("load", function() {//ページが開いたときに 5 var result = document.getElementById("result"); 6 var description = document.getElementById("description"); 7 // result.style.display = "none"; 8 description.style.display = "none"; 9 10 var xhr = new XMLHttpRequest(); 11 var XMLhttpObject = null; 12 var csvArray = new Array(); 13 function getCSVFile() { 14 xhr.onload = function() { 15 createArray(xhr.responseText); 16 }; 17 18 xhr.open("get", "data.csv", true); 19 xhr.send(null); 20 } 21 getCSVFile(); 22 23 function createXMLHttpRequest() { 24 XMLhttpObject = new XMLHttpRequest(); 25 return XMLhttpObject; 26 } 27 28 function createArray(csvData) { 29 var tempArray = csvData.split("\n"); 30 var mainData = []; 31 for(var i = 0; i < tempArray.length;i++){ 32 csvArray[i] = tempArray[i].split(","); 33 // console.log(csvArray[i][0]); 34 } 35 } 36 }); 37  var btn = document.getElementById("btn");//ボタンクリック時の処理 38 btn.addEventListener("click", function() { 39 var x = document.getElementById("1").value;// 検索条件の吸い上げ 40 var y = document.getElementById("2").value; 41 var z = document.getElementById("3").value; 42 var a = document.getElementById("4").value; 43 var b = document.getElementById("5").value; 44 var c = document.getElementById("6").value; 45   //if( x === csvArray //データの中にx~cがあるときにcsvの0番目(通し番号を表示する) 構想のためコメント化しました) 46 47 }); 48} 49

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

Lhankor_Mhy

2019/06/13 02:03

『うまくできていない』とは具体的には何が起きていますか? エラーメッセージなどをご提示ください。
t.o_325

2019/06/13 02:07

エラーメッセージが出ないのに,指定の行動をしない形です。
miyabi_takatsuk

2019/06/13 02:25

CSVの中身のコードも記載した方が、回答つきやすくなるかと思います。
Lhankor_Mhy

2019/06/13 02:26

「エラーメッセージが出ない」というのはどのように確認されましたか?
t.o_325

2019/06/13 02:30

開発者ツールでの確認になります。
Lhankor_Mhy

2019/06/13 02:32

当方でご提示のコードを実行したところ、文法エラーとなったのですが、t.o_325 さんが実行しているコードはご提示のコードと異なる、という認識で合っていますか?
t.o_325

2019/06/13 02:35

大変失礼しました。 今確認したところコピペの位置がずれていたため,コードが違っていました。 すいません。 修正します。
Lhankor_Mhy

2019/06/13 02:58

『指定の行動をしない形』というより、その部分のコードをまるっと書いていない、ということでしょうか? 「わからないところがわからない」みたいな感じで、具体的な質問が浮かばない状態、と考えていいでしょうか?
kei344

2019/06/13 03:10

表示するためのコードがありませんので、省略せず質問分に追記してください。
yambejp

2019/06/13 03:47

具体的なcsvから何で検索をして(もしくは空検索して) 結果として何がえたいのかを提示してもらうほうが速いでしょう また検索文字が複数ありますがどれか一つその行のレコードが 完全一致するという想定でよろしいですか? (それも含めたサンプルお願いします)
t.o_325

2019/06/13 03:54

id が数字なのは便宜上です。 原本は数字ではありません。
t.o_325

2019/06/13 03:58

csvはバイクの登録データで,検索ワードが複数あるのは,全て入力するのではなく,わかっているものを入力してバイクの詳細を調べるために作成しているため,完全一致したデータの車種(データでは0番の列)を表示したいと思っています。
guest

回答1

0

ベストアンサー

↓この辺を組み合わせてみてはいかがでしょうか。

indexOf() メソッドは引数に与えられた内容と同じ内容を持つ配列要素の内、最初のものの添字を返します。存在しない場合は -1 を返します。

Array.prototype.indexOf() - JavaScript | MDN

 

some() メソッドは、配列の少なくとも 1 つの要素が、渡された関数によって実施されるテストに通るかどうかをテストします。

Array.prototype.some() - JavaScript | MDN

 

filter() メソッドは、引数として与えられたテスト関数を各配列要素に対して実行し、それに合格したすべての配列要素からなる新しい配列を生成します。

Array.prototype.filter() - JavaScript | MDN

js

1 var csvArray = [ 2 [0,1,2], 3 [0,1,3], 4 [0,3,4], 5 ]; 6 var x = 3; 7 var y = 4; 8 csvArray.filter(function(r){ 9 return r.some(function(c){ 10 return [x,y].indexOf(c) != -1; 11 }) 12 }); 13 14/* 15[[0, 1, 3], [0, 3, 4]] 16*/

投稿2019/06/13 08:09

Lhankor_Mhy

総合スコア36074

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問