php等で配列にるループで値を格納したい場合には以下のようなコードで対応しております。
php
1$hoge=[]; 2for($i;$i<count($ary);$i++){ 3$hoge[]=ary[$i];//pushed in local scope 4} 5var_dump($ary);//global scope 6
同じ要領で下記のようにJSでもcontent(Array)にeachのなかでpushして値を格納していきたいのですが
local scopeで格納された値はgrobal scopeでは出力されません。
html
1<!DOCTYPE html> 2<html lang="ja" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>script</title> 6 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 7 <script type="text/javascript" src="xdomain.js"></script> 8 </head> 9 <body> 10 11 <script type="text/javascript"> 12 //Javascript変数定義 13 var content =new Array(); 14 $(document).ready(function(){ 15 $.ajax({ 16 url: 'https://www.xyz',// http://から始まるURLを指定 17 type: 'GET', 18 success: function(res) { 19 var content =new Array(); 20 $(res.responseText).find('.link').each(function(){ 21 content.push($(this).attr('href'));//ここです 22 }) 23 console.log(content);//local scopeのため出力される 24 } 25 }); 26 }); 27 console.log(content);//globalscopeのため出力されない 28 29 </script> 30 </body> 31</html>
-
Javascriptとphpではスコープの考え方が異なるのでしょうか?要領としては、globalで配列型で変数を宣言、localで配列に複数の値をpush、改めてグローバルで配列の内容をpushという点で変わらないと思うのですが、javascriptとphpのスコープの違い等で検索しても具体的なものを探すことができなかったため、アドバイスを頂けますでしょうか?
-
上記のJavascriptのコードでphpと同様にglobalでもその配列型変数を利用するすべはあるのでしょうか?
初歩的な内容であれば誠に申し訳ございませんが
宜しくお願い申し上げます。
修正コードの加筆
html
1<!DOCTYPE html> 2<html lang="ja" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>script</title> 6 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 7 <script type="text/javascript" src="xdomain.js"></script> 8 </head> 9 <body> 10 11<script type="text/javascript"> 12//Javascript変数定義 13 14$(document).ready(function(){ 15 var content =new Array(); 16 $.ajax({ 17 url: 'https://www.xyz',// http://から始まるURLを指定 18 type: 'GET', 19 success: function(res) { 20 $(res.responseText).find('.link').each(function(){ 21 content.push($(this).attr('href')); 22 }) 23 24 // console.log(content); 25 } 26 }); 27 28 console.log(content); 29 }); 30 31 </script> 32 </body> 33</html>
回答2件
あなたの回答
tips
プレビュー