この関数を使用して、URL をスクレイピングし、そこから変数を作成しています。
ページの GET URL 変数を読み取り、それらを「連想配列」として返します。example.html?foo=asdf&bar=jkls で関数を呼び出すと、 map['foo']='asdf' および map['bar']='jkls' が設定されます
for ループを追加する方法
foo = map['foo']
bar = map['bar']
?
最初の解決策は機能しませんでした。
この関数を使用して、URL をスクレイピングし、そこから変数を作成しています。
ページの GET URL 変数を読み取り、それらを「連想配列」として返します。example.html?foo=asdf&bar=jkls で関数を呼び出すと、 map['foo']='asdf' および map['bar']='jkls' が設定されます
for ループを追加する方法
foo = map['foo']
bar = map['bar']
?
最初の解決策は機能しませんでした。
このようにマップをループできます
for (var key in map)
{
window[key] = map[key];
}
これにより、window.foo および window.bar と同じである window[foo] および window[bar] が作成されます。これらは、foo および bar と同じです。
EDIT:私が使用しているテストページの本文の内容は次のとおりです。テストを初期化し、クリック ハンドラーをアタッチするために jQuery を使用するため、jQuery を head にロードする必要がありますが、for ループの概念は jQuery に依存しません。地図が手元にないので、ドキュメントが読み込まれるときに自分で地図を作成しています。その時点から、説明したとおりにマップをループし、クリック ハンドラーをボタンにアタッチして、適切な割り当てをテストします。
<input type="button" />
<script type="text/javascript" language="javascript">
$(document).ready(function(){
/* You don't need to build the map, you should already have it
var map = new Object();
map.foo='bar';
map.test='meh';
*/
// This is the loop from my original post
for (var key in map)
{
window[key] = map[key];
}
// This is just a debug handler, you wouldn't need it
$('input[type="button"]').click(function(){
// This is very annoying, but proves that all three methods of access are valid for both variables
alert(window['foo']);
alert(window.foo);
alert(foo);
alert(window['test']);
alert(window.test);
alert(test);
return false;
});
});
</script>
なぜこれらすべての変数でグローバル名前空間を壊したいのですか?map.foo
との使用の何が問題になっていmap.bar
ますか?—あなたはそれを知っていてmap['foo']
、map.foo
まったく同じですか?
その上、あなたが望むものは非常に安全ではありません。誰かがURLクエリパラメータを使用してページを開いた場合、あなたは失敗するでしょう。グローバル変数?%24=test
を上書きしてしまうため、jQueryは機能しなくなります。$
また、URLパラメータは通常大文字と小文字を区別しませんが、Javascriptは大文字と小文字を区別することに注意してください。したがって、通常?KEY=value
はと同じになり?key=value
ます。 map.key
ただし、とmap.KEY
は異なる変数として扱われます。