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

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

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

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

Q&A

解決済

2回答

229閲覧

javascript配列"[";return val,...,variable+"]"の構文についての疑問

John_doe_774

総合スコア11

JavaScript

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

0グッド

0クリップ

投稿2018/08/18 00:30

前提・実現したいこと

やりたいことは、webPage上で、csv→jsonに変換するサイトがあるので、それをwebAPIとして無理やり使いたいがためにブックマークレットを使います。
そしてcsvを読み込んでtextareaに入力することがしたいです。
http://tools.nissuk.info/csv-json/
上記のページになります。
その中で、参考にしたサンプルプログラムに分からない点があったので、質問させてもらいました。

発生している問題・エラーメッセージ

"[";return e.name&&(t+=e.name+": "),e.id&&(t+="#"+e.id),e.classList.length&&(t+="."+String(e.classList).replace(" ",".")),t+"]" の記述が分かりません。

該当のソースコード

//function(){( function(){3_e関数 3_t関数 2_a関数 1_nオブジェクトa(n)} )() javascript:void function() { (function() { //オブジェクト初期化子 var e= {textarea:"テキスト\nエリア", input: { text:"テキスト", search:"検索テキスト", tel:"01234567890", password:"Password1234", url:"http://abc.def.ghi", email:"mail@abc.def", month:"2016-01", week:"2016-W01", date:"2016-01-01", time:"12:34", "datetime-local":"2016-01-01T12:34", number:"", range:"", color:"#2477A0" } }, t=function(e) { //element //<tag>のname属性、id属性、classlist区切り文字を.に //AND expr1(f) expr2(expr1:t) var t= "[";return e.name&&(t+=e.name+": "),e.id&&(t+="#"+e.id),e.classList.length&&(t+="."+String(e.classList).replace(" ",".")),t+"]" }, //n=nodeElementsList //e.でオブジェクト参照 a=function(a) { for(var n=a.textareas,r=0;r<n.length;r+=1) n[r].value=t(n[r])+e.textarea; for(var c=a.selects,r=0;r<c.length;r+=1) { var l=c[r].getElementsByTagName("option"); l.length>0&&(c[r].value=l[l.length-1].value)} for(var s=a.inputs,r=0;r<s.length;r+=1) switch(s[r].type) { case"checkbox": case"radio": s[r].checked="checked";break; case"text": s[r].value=t(s[r])+e.input[s[r].type];break; case"range": case"number": var i=e.input[s[r].type]; s[r].value=i?i:s[r].max;break; default:e.input[s[r].type]&&(s[r].value=e.input[s[r].type]) } }, //text[0],text[1] select[0] input[0] n= { textareas:document.getElementsByTagName("textarea"), selects:document.getElementsByTagName("select"), inputs:document.getElementsByTagName("input") }; a(n) })() }();

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

参考元※ http://blog.s0014.com/posts/2016-08-17-js-dummy-input-form/

csvの読み込み自体はtextareaのidを取って、e.value="csvの中身"としてfilereadに関連したメソッドを使えば出来るかなと考えてます。
単純に、そのページをhttpで読み込むだけでは出来ないことが分かっているのでその方法を取りました。

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

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

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

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

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

guest

回答2

0

ベストアンサー

おそらく、何かのツールで圧縮したらこうなったのでしょう。

  • &&は前半がtrue相当の場合だけ後半を処理する
  • ,は前を計算してから後を計算して、後を返す演算子

ということに注意して展開すれば、以下のようになります。

javascript

1var t="["; 2if(e.name) t+=e.name+": "; 3if(e.id) t+="#"+e.id; 4if(e.classList.length) t+="."+String(e.classList).replace(" ","."); 5return t+"]";

投稿2018/08/18 00:41

maisumakun

総合スコア145123

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

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

John_doe_774

2018/08/18 05:36

"[";return e.name&&,...,t+"]" いきなり;returnと来ていたので、困惑していたのだすが ,は演算子という説明があったので、文字列の後だけセミコロンが付き、 だから、;returnとなるんですね。 説明が順を追っていて分かりやすかったです。
guest

0

そのコードはブックマークレット用にminify(コードの意味をそのままに圧縮してサイズを減らす)されているので、素人も玄人も読めないものになっています。

幸いにして参考サイトの一番下にminifyしていないコードが載っているので、まずそっちを参考にしてもう一度やりなおしてみてください。

質問するならそれから。

投稿2018/08/18 00:46

hope_mucci

総合スコア4447

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

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

John_doe_774

2018/08/18 04:52

質問を書いているときに、リンクを張り終わったとき気づきました・・・ すみません、参考になります。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問