ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:なぜ?グローバル変数に代入できません!) なぜ?グローバル変数に代入できません! 2009/04/05 21:42 このQ&Aのポイント グローバル変数に代入できない理由とは何でしょうか?selectオブジェクトの数を調べ、trueが代入されているか調べるためのメソッドがうまく機能しない理由は何でしょうか?for文内で値が代入されているにも関わらず、for文外では値がundefineになる理由は何でしょうか? なぜ?グローバル変数に代入できません! お世話になります。 以下、例文です。 flag = new Array();//グローバル変数として用意 function selectCount() { for (count = 0; count <= document.form1.length - 1; count++) { if (form1.elements[count].type == "select-one") { itemflag[count] = true; alert(itemflag[count]); } } alert(itemflag[1]+'aa'); } <body onLoad = "selectCount();"> htmlの中にあるselectオブジェクトの数を調べ、 その数の分フラグを作成し、true指定するメソッドを作成したつもりです。 しかし、for文を抜けたところにalertを置き、実際に trueが代入されているか調べたところ、値はundefineになってしまいました。for文内で値が代入されていることは確認されているにも関わらず、です。 なぜでしょうか?for文でのtrue、false指定は,for文外では機能しないのでしょうか? ご存じの方いらっしゃいましたら、ご教授宜しくお願い致します。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー zxcv0000 ベストアンサー率56% (111/196) 2009/04/05 22:40 回答No.1 > flag = new Array();//グローバル変数として用意 ここだけ変数名が違うとか、どこでも var 宣言してないとか、そこいらへんじゃ無いでしょうか? あるいは、count が 1 以外で true が入ってるとか。 JavaScript のエラーを検出できる設定でテストされてます? 質問者 お礼 2009/04/05 23:53 ご指摘ありがとうございます。 おっしゃられた通り、countに入力された値が、1ではありませんでした。 ご教授ありがとうございました。助かりました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発JavaScript 関連するQ&A javaScriptの変数をJavaの変数に代入する。 jspで作ったプログラムがあるこのような場合変数を共有する方法はありますでしょうか? 以下の場合iの(JavaScript)値をjavaの変数iに代入したい場合どうすればいいでしょうか? <%! String s[] ={A,B,C,D,E} %> function chek(){ for(i = 0;i< 5 ;i++){ <%! int i =%> = i;//←この部分です //document.form1.desc.valueにはBの値が入っている if(<%! s[i] %> == document.form1.desc.value){ alert("Bです"); } } 変数と配列の要素を比べるループ すいません。質問タイトルがわかりにくくて、、、 ある数字と、count=5; 順番の不規則で長さも不明な例外番号が入った配列 ExceptionNum=(20,2,16,4,9,12,13,9,18,5,11) があり 例外番号と一致しないときそのまま 例外番号と一致する場合はcountより大きく例外番号と一致しない 最小の整数を返す関数を作っています。 例の場合 引数→返り値 5→6 //5が例外のため 3→3 //例外にない 11→14 //11,12,13が例外のため となってほしいのですが 数が大きくなるとなぜかうまく動きません。 どなたか教えていただけますでしょうか? function checkDeleteList(count){ var flag=0; //alert(count); while (flag == 0) { flag=1; for (i = 0; i < ExceptionNum.length; i++) { if (count == ExceptionNum[i]) { flag = 0; } } if (flag == 0) { count++; } } //alert(count); return count; } よろしくお願いいたします。 代入ができない。(undefined) 環境:XP SP2, IE6/php, html, javascript submitした際にjavascriptの関数(getNo())が呼ばれ、その関数内で代入ができず参っています。 .php ----- <? $setNo = [111,222,333,444,555]; for($i=0;$i<5;$i++) {?> <input type="text" name="no[<?=$i;?>]" value="<?=$setNo[i];?>" id="no"> <?}?> (submit省略) .js ----- function getNo(obj) { var orgNo = document.all("no"); var bufNo = ""; //初期化空 //var bufNo ; //初期化しないと※1 //var bufNo = "huga";//初期化"huga"※2 for(var k=0; k<orgNo.length; k++) { alert(orgNo[k].value);//k=0なら111と表示される bufNo = orgNo[k].value;//代入してるのに alert(bufNo='+bufNo); //空のまま →代入されてない なぜ?? //alert(bufNo='+bufNo);//※1undefined→代入されてない //alert(bufNo='+bufNo);//※2huga→代入されてない alert(orgNo='+orgNo[k].value);//k=0のときなら111と表示される } .jsには他にもsubmitから呼ばれている関数があり それらは正常に動作しますが、この関数だけおかしいので 書き直してみたりしましたが改善されません。 また、関数内で配列も宣言してますが、 配列要素にfor文のiなどを[i]のようにいれても、配列の値がうまく変数に代入できません。 ただし、[0]や[2]と指定すると正しい値が表示され、代入もできます。 undefinedになることが問題なのではなく 代入されない理由がわかりません。 どういうことになっているのか教えてください。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 教えて下さい。for文内での変数宣言について Javaのプログラムで困っています。 for文内でfor分だけ変数を宣言したいのですが、 その際変数名に数字(ナンバリング)を付与した形にしたいと考えています。 例) String Test1 String Test2 : : 上記の様な場合、for文をどの様に作成したらいいですか? num = 5; for(int i = 0; i < num; i++){ String Test = null; } ⇒このままだと変数Testが1つしか出来ない・・・ 変数の後にナンバリングしたいのですが上手くいきません。 numの数はユーザの指定で毎回変更されるため、 for文でその数だけ変数を作成したいと考えています。 どなたかご教授宜しくお願い致します。 チェックボックスの選択チェック ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★ ;} } } listで変数代入 あらかじめ、データ行のデータ数がわかっていれば、listで変数へ代入してあげれば問題ないと思いますが、データによってはデータ行のデータ数が10個とかそれ以上になると、その分だけlist($data_○.......................)とすると面倒なので、簡単に行のデータ数をカウントしてlist関数を使った方法で処理する方法はないのでしょうか? $data_01とかアンダーバー末尾数字みたいな方法でlist($data_01,$data_02,$data_03,,,,,,,,,,,,,,,,,,,,,)として変数に代入したいで教えて下さい。 sample.csv りんご1,ばなな1,いちご1 りんご2,ばなな2,いちご2 りんご3,ばなな3,いちご3 define(csvdata, "sample.csv"); $data = file(csvdata); for ($i = 0; $i < count($data); $i++) { list($data1,$data2,$data3) = split(",", $data[$i]); 複数のラジオボタンの選択チェック Q1とQ2の2問があり、ラジオボタンで回答を選択するようにしていますが、 ラジオボタンを選択しなかった場合、選択を促すようメッセージを表示させるようJavaScriptで以下のように作成してみましたがうまくいきません。 Q1とQ2の両方を選択しなかった場合、「Q1が選択されていません」とメッセージが表示されますが、Q1だけを選択してQ2を選択しなかった場合はメッセージが表示されません。 いろいろ調べてみたのですが、function checkの使い方に問題があるのでしょうか? function check(){ var flag = 0; if(document.form1.Q1.length) { flag = 1; var i; for(i = 0; i < document.form1.Q1.length; i ++){ if(document.form1.Q1[i].checked){ flag = 0; break; } } } if(flag){ window.alert('Q1が選択されていません'); return false; } else{ return true; } var flag = 0; if(document.form1.Q2.length) { flag = 1; var i; for(i = 0; i < document.form1.Q2.length; i ++){ if(document.form1.Q2[i].checked){ flag = 0; break; } } } if(flag){ window.alert('Q2が選択されていません'); return false; } else{ return true; } } ラジオボタンとセレクトボックスの選択チェック ラジオボタン、セレクトボタンの選択チェックをしたいのですが 同時にチェックする場合どうすればよいのでしょうか。 失敗策ですが、参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++){ if(document.form1.seibetu[i].checked){ flag=0; break; } } } else{ if(!document.form1.seibetu.checked){ flag=1; } } if(flag){ window.alert('性別が選択されていません'); return false; } else{ return true; } if(document.form1.nenrei.options[document.form1.nenrei.selectedIndex]. value==""){ flag=1; } if(flag){ window.alert('年齢が選択されていません'); return false; } else{return true; } } 変数名 変数名を $abc1 $abc2・・・・ 繰り返し文などで生成することは可能でしょうか? そして、変数に値を代入したいのですが・・・。 if(a==true){$abc1 = "OK"} if(a==true){$abc2 = "OK"} if(a==true){$abc3 = "OK"} ・ ・ ・ ・ ・ ・ このような文は繰り返し文では無理ですか?? 変数名に変数を for文を使って処理するプログラムを作成中ですが、 for ( $i=1; $i<=$count; $i++) { $「log+$count」 = './test'.$count.'.log'; } としていくのですが、 「log+$count」 の部分がどうすればいいかわかりません。 最終的に、 $count=5 $log1=./test1.log $log2=./test2.log $log3=./test3.log $log4=./test4.log $log5=./test5.log としたいのですが、よくわかりません。 だれかご存知でしょうか? selectボックスの選択結果を変数に代入したい ブログのホームページで過去のブログカレンダーを表示させるために、年と月をセレクトボックスから入力して希望の年月のカレンダーを表示させようと頑張っています。 下記プログラムを作成しましたが、selectボックスから選択した年号を変数に代入することが出来ず、取得した年号をjavaの内部処理に使うことが出来ません。 考えられることはいろいろやってみましたが、全て変数に代入するところでうまくいきません。 よろしくご指導お願いします。 <html> <head> <title>選択された表示テキストを取得する</title> </head> <body> <select name="year" onchange="alert(getSelectedText(this))"> <option value="1">2014</option> <option value="2">2013</option> <option value="3">2012</option> </select><a>年</a> <script type="text/javascript"> function getSelectedText(obj){ var txt = obj.options[obj.selectedIndex].text; // 表示テキスト取得 return 'text = ' + txt; // 表示テキストをリターン var selectYear = text; // 表示テキストを変数に代入 } alert(selectYear); // 変数の内容をアラート表示 /*if(selectYear==2014){ // 変数を内部処理に使用 document.write('\ <select name="month" onchange="selectMonth(this)">\ <option value="1">1</option>\ <option value="2">2</option>\ <option value="3" selected>3</option>\ <option value="4">4</option>\ </select><a>月</a>\ ');*/ </script> </body> </html> php 変数(変数名)の結合について。 php 変数(変数名)の結合について。 こんばんは。 phpでホームページを作成しておりますが どうも上手く動かないのでこちらに質問させて頂きました。 変数名$testに数字を連番で付け、 $test0 = (値1,値2,値3,・・・) $test1 = (値1,値2,値3,・・・) $test2 = (値1,値2,値3,・・・) と各変数に配列を代入したいと考えています。 そこで、for文を使用し、 for($i=0; $i<10; $++) { $test.$i = (値1,値2,値3,・・・) } と記述た所、上手く動作せずに困っております。 二次元配列での代入は可能だと思いますが $test[0] = (値1,値2,値3,・・・) $test[1] = (値1,値2,値3,・・・) $test[2] = (値1,値2,値3,・・・) for($i=0; $i<10; $++) { $test[$i] = (値1,値2,値3,・・・) } ※ 実験してませんけど・・・。 なるべく二次元は使わないで処理したく思いますが やはり二次元配列のが合理的でしょうか・・・。 その点も踏まえ、何方かご教授頂ければ幸いです。 宜しくお願いいたします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム VBA 変数を使うべき? VBA 変数を使うべき? VBAを独学で勉強中のものです。 エクセルVBAでデータが入っている行数分処理を行いたい場合などに ------------------------------------------------ lastRow = cells(rows.count,1).end(xlup).row for i = 1 to lastRow ・・・ next i ------------------------------------------------ などと最終行を変数に代入して使う場合と ------------------------------------------------ for i = 1 to cells(rows.count,1).end(xlup).row ・・・ next i ------------------------------------------------ などと直接for文の中で指定する場合とでは結果は同じと思うのですが 結果以外の部分で見た場合どちらで行うほうがいいのでしょうか? チェックボックスの使い方 VBスクリプトでよくわからないところがあるので教えてください。たくさんのチェックボックスがあるので、For i To ~Next の構文を使って効率よくチェックされたものだけSQLの構文に取り入れて検索しようとしたのですがうまくゆきません。どのようにしたらよいでしょうか。 今試してみたのは、検索条件の設定画面で、 <input type=checkbox name=tatemono(0) value=自社使用>自社使用 <input type=checkbox name=tatemono(1) value=事業用>事業用 <input type=checkbox name=tatemono(2) value=電算センター >電算センター というようなチェックボックスを 検索処理用ページで SQL="SELECT * FROM [データ] " 'チェックボックスのチェック数が0でなければWHERE文をいれるflagをTrueにしておく If Request.Form("tatemono").Count>0 Then SQL=SQL & "WHERE " flag=True End If 'チェックボックスを最初から調べてチェックされていたらその項目がyesになっているという条件をSQL文に追加する For i=1 To Request.Form("tetemono").Count If Request.Form("tatemono")(i)<>"" Then fldname=Request.Form("tetemono")(i) If flag=True Then SQL = SQL & "AND" Else SQL = SQL & "WHERE" End If SQL= SQL & fldname & "=Yes" End If Next とやってみたのですが、ぜんぜん駄目みたいです。 根本的にどこか間違ってますよね・・・。 直すところを教えてください。 お願いします。 フォームの入力チェックをすると既に入力した項目が消える 実は過去のQ&Aの中でご紹介されていた ホームページを拝見させて頂いたのですが、 残念ながら私の応用力が足りず、 上手く作ることが出来ません。 下記のように書いてみたのですが、 これでは未入力のメッセージにOKを押すと その前に入力したものが全て消えてしまいます。 何方か、正しい書き方をご教示下さいますよう 宜しくお願い申し上げます。 <script language="JavaScript"> <!-- function checkForm(){ if(document.form1.chk1.checked == false && document.form1.chk2.checked == false) { alert('チェックなし'); return false; } { flag = 0; for ( i = 0 ; i < document.form1.radiobtn.length ; i++){ if (document.form1.radiobtn[i].checked){ flag = 1; } } if (!flag){ alert('ラジオなし'); return false; } if(document.form1.sel.selectedIndex == 0){ alert('メニューなし'); document.form1.sel.focus(); return false; } if(document.form1.bun.value == ""){ alert('文字なし'); document.form1.bun.focus(); return false; } } return true; } //--> </script> python: ストアする値を更新するコード pythonコードの質問です 入力は、画像のExcelシートのA列のようになっています 1行目:その後入力される単語の数 2行明以降:テキスト(ここでは野菜名) これに対して次のコードで「判定」をかけました #----------------------- #数値入力(入力される単語数) t = int(input()) flag = 0 store = 0 i = 0 for i in range(t): #野菜名判定 txt = input() #Tomatoの入力を1として変数flagに代入 if txt.count("Tomato") == 1: flag = 1 store = flag print("iは " + str(i) + "-----") print("判定 " + str(flag == 1 & (store - i) > 0)) print("storeは " + str(store)) i += 1 else: flag = 0 print("iは " + str(i) + "-----") print("判定 " + str(flag == 1 & (store - i) > 0)) print("storeは " + str(store)) i += 1 #----------------------- 2番め以降の入力を for i in range(t)で回し、"Tomato"がみつかると、flagに1を立てます そしてflagの値を、次に"Tomato"が出現するまでstoreに代入して保存 flag == 1 (Tomatoが出現した入力)and (store - i) > 0 となった場合にTrue それ以外はFalse 判定をさせようとしています "Tomato"が入力されても、一定期間はTrue判断にしたくないため、 (store - i) > 0 でジャッジしています ところがi == 7のとき、storeの値が本来storeで8になるべきところが、1のまま変化がおきていないため、本来"判定"がTrueであるべきがFalseとなります store値を上の条件「(store - i) > 0」で更新させたい つまり i が 7のとき、store は 8 ですが、コードのどこが間違っているのでしょうか 他のジャッジ方法でもかまいません 【EXCEL2007】VBAで変数に代入したい アクセスありがとうございます。 VBA勉強中です。 新しいシートを複数挿入して、そのシート名を指定のものにしたいのですが そのシート名を一括で指定できないでしょうか? たとえば、"北海道","青森","秋田"...と47都道府県でシートを新規作成するとして for i =1 to 47 変数A=("北海道","青森","秋田"...,"沖縄") Worksheets.Add ActiveSheet.Name = 変数A next i のような感じで指定できないでしょうか? 上の文はトンチンカンかもしれないんですが…^^; よくやる作業なので、なんとか簡略化できないかなと思い、 検索してみましたが、検索ワードが悪いのか、まったく出てきませんでした。 どうぞ、よろしくご教授くださいませ…!!! ページごとに有効な変数 こんにちは。 ASP.NET2.0+C#で開発しています。 こういった表現でよいのか、いまいち自信がないのですが、ページごとに有効な変数が欲しい場合には、どうすればよいのでしょうか? 例えば、カウンタを実現しようとして、 .aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Count.aspx.cs" Inherits="Count" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> 「<asp:Label ID="Num" runat="server" />」<br /> <asp:Button ID="CountButton" runat="server" OnClick="Count_Click" Text="カウント" /> </form> </body> </html> .aspx.cs public partial class Count : System.Web.UI.Page { int count; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { count = 0; Num.Text = count.ToString(); } } protected void Count_Click(object sender, EventArgs e) { count++; Num.Text = count.ToString(); } } と、した場合、countは毎回初期化されてしまうため、ブラウザ上の表示は1から先に進みません。 かといって、 static int count; とすると、複数のブラウザでページを開いた場合に、値を共有してしまいます。 表示が進み、かつ値を共有しないようにするためには、どのような手法を用いればよいのでしょうか? なお、今回は実験のため、int変数一つですが、実際には可変長の配列となる予定です。よろしくお願いします。 Selectの中身をfor文で入れる かなり初歩的な質問だと思いますが select文のoptionの値に1~100の数値を入れたいときに JavaScriptではどのように記述すればいいのでしょうか。 ページ読み込み時にはフォームに代入したいので [htmlファイル] <body onload="init()"> ・・・ <form name="f1"> <select name="s1"></select> [jsファイル] function init() { for(i=1; i<=100; i++) document.f1.s1.value=i; } のようにしたのですがうまくいきません。 fileUploadオブジェクトへの値の代入 (困っています。教えてください。m(__)m) こんばんは。 fileUploadオブジェクトへの値の代入がどうにもこうにもできません。 いったいどうしたらいいのでしょうか?どうか助けてください。 よろしくお願いいたします。m(__)m -- <HTML><BODY> <FORM NAME="myFormF"> <INPUT TYPE="file" NAME="myFile"> <INPUT TYPE="button" value="set FILEFILE -> file" onClick="document.myFormF.myFile.value='FILEFILE'"> <INPUT TYPE="submit" onClick="alert(document.myFormF.myFile.value)"> </FORM> <FORM NAME="myFormT"> <INPUT TYPE="text" NAME="myText"> <INPUT TYPE="button" value="set TEXTTEXT -> text" onClick="document.myFormT.myText.value='TEXTTEXT'"> <INPUT TYPE="submit" onClick="alert(document.myFormT.myText.value)"> </FORM> </BODY></HTML> -- key: fileUpload object,ファイルアップロードオブジェクト,WSH,javascript 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
ご指摘ありがとうございます。 おっしゃられた通り、countに入力された値が、1ではありませんでした。 ご教授ありがとうございました。助かりました。