_X_y_z_のプログラム開発日記とか備忘録だとかCSSだとか。

主にプログラミング、備忘録、ウェブ。

jsでscriptで埋めた時の?以降の引数を連想配列として取得する

,


まあどこでもよくあるけど作ってみたくなったので作った。
何かタイトルだけ見るとよく分からないかもしれないけど、
<script src="script.js?key=value&key2=value2" type="text/javascript"></script>

の引数部分を連想配列に収めますよっと。こういうのは嫌というほどある気がするけどね。

早速html部分。

html

<script src="script.js?key=abcde" type="text/javascript"></script>
端折っちゃうけど、script指定部分だけ。とりあえず適当に引数を指定します。それぞれキーと値。

js

あたりまえだけどさっきのhtmlで読み込むjsに書く。
var scripts = document.getElementsByTagName("script");
var script = scripts[scripts.length - 1];
var uri = script.src;

var result = parseParam(uri.slice(uri.lastIndexOf("?")+1));
/*resultの中身
for(var i in result){
	document.write(i +"="+ result[i]+"<br />");
}
*/

function parseParam(param){
	var keyAndValue = param.split("&");
	var getParam = [];
	
	for(var i = 0; i < keyAndValue.length; i++){
		var temp = keyAndValue[i].split("=");
		getParam[temp[0]] = temp[1];
	}
	return getParam;
}

解説ー

最初の三行で自身のscriptタグを取得。 parseParamに?以降、つまり引数の部分だけ取得して引き渡しています。 渡された引数はまず&で分解して配列に格納、その配列をさらに分解して"="区切りで分解、0がキー、1が値となる。 これを変数にぶち込んでいって最後にリターン。 コードはコメントアウトしてるけど直せばどうなってるかわかるよ。 ではでは。

goo.glが一般公開されましたねopera11が出ましたね

Write a comment

New comments have been disabled for this post.