• 締切済み

コーディングの省略について。

JavaScriptでformの値を取得したい時、正規の記述方式では、 window.document.(フォーム名).///// となるわけですが、 省略して、 フォーム名.///// と記述することもできますよね? これはどちらのほうがいいのでしょうか? 処理速度等に影響とかあるのでしょうか? 何かご存知の方、教えてください。 よろしくお願いします。

noname#4065
noname#4065

みんなの回答

noname#1785
noname#1785
回答No.1

省略できるオブジェクトはwindowだけなはずです。 ですので、フォーム名.///// と省略する事は、JavaScriptの構文上間違っています。 一部チェックの甘いブラウザでは動作するかもしれませんが、基本と違うという点で、するべき省略方法ではないと思います。 また、基本構文からはずれているので、処理速度云々を論じる対象でもないでしょう。 (というより、ローカル環境で動くJavaScriptは、よっぽどの事が無い限り処理速度が大幅に変わることはないのでは?) 省略する場合は、with句を使うのが正式方法です。 私はこちらを使用したり、引数でオブジェクトを参照して使用したりしています。 with(document){  (フォーム名).(エレメント名).(プロパティ) } または、 <form action="***" onSubmit="doAction(this)"> ・・・ </form> としておいて、 function doAction(frm){  frm.(エレメント名).(プロパティ) } 等として、省略化(省力化?)できます。 すべてのブラウザでキチンと動作させるのであれば、基本は押さえるべきかと。 自分がネットしていて起きるJavaScriptエラーって、結構うっとおしいので、そう心がけています。

関連するQ&A

  • フォームオブジェクトのtargetプロパティ

    cakephpとjavascriptを使っています。 window.openで子画面を出し、子画面上の例えば[設定]ボタンを押した時に子画面を閉じ、 子画面上のフォームの値を、親画面に反映させたいため調べてなんとか出来ました。 子画面の方でdocument.form.target = 'parent';に設定しただけで出来たので結果はいいのですが、 targetを設定しない場合でも、親画面でデータが取得できているのに表示出来なかったのが、 納得いかなくて質問しました。 function [設定]ボタンで呼ばれる関数(){ document.form.action = "/~/TestController/input"; 省略しています     ☆document.form.target = 'parent';  document.form.submit(); window.close(); } ☆の行がない場合でも、 TestController内のinputメソッドでは$this->dataにフォームの値は入っていましたし、 当然親画面のinput.ctpでも$this->dataにフォームの値が入っていました。 なのに、表示出来なかったのが納得がいきません。 そうゆうもんだからと言われればそれまでですが、 きちんと理解しておきたいので、よろしくお願いいたします。

    • 締切済み
    • PHP
  • フォーム内の値の指定方法

    JavaScriptで、 フォーム内の値を指定するとき、どちらの記述がwebの標準として正しいのでしょうか? document.form1.aaa.value form1.aaa.value  【フォーム】 <from name="form1"> <input type="textbox" name="aaa"> </form>

  • submit()について

    突然ですがアドバイスをお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- function aSubmit(){ document.Form1.action='xxxxx'; document.Form1.aaaaa.submit(); } --> </SCRIPT> これで“Form1”内のNAMEが“aaaaa”とついた フォームの値を送信できますよね、 ここで質問なのですが、 例えばNAMEが“aaaaa”のフォームの他に NAMEが“bbbbb”というフォームがあったとして、 “aaaaa”と“bbbbb”の値を同時に送信したいときには、 <SCRIPT LANGUAGE="JavaScript"> <!-- function aSubmit(){ document.Form1.action='xxxxx'; document.Form1.('aaaaa,bbbbb').submit(); } --> </SCRIPT> とこんな書き方でも大丈夫なのでしょうか?

  • 子ウィンドウの操作

    処理概要:親ウィンドウからボタンクリック時にjavascriptのみで      子ウィンドウを作成し、遷移させた後、子ウィンドウの      フォームをサブミットする。 -------以下ソース-------- var url = "/index.html"; hWin=window.open("",""); window.hWin.location.href=url; setTimeout(a,10000); function a(){ window.hWin.document.form.submit(); // window.hWin.document.form.name.value = "住友"; // window.hWin.document.form.button1.click(); }  * index.html にはformというフォームがあり、nameという   テキストボックスとbutton1 というボタンをフォーム内に   持っているとします。 以上のような簡単なものですが、7行目のsubmitでこけます。 window.hWin.document.formがないようでヌルポになります。 親から子ウィンドウのサブミットをjavascriptだけで制御 できないでしょうか。 また、できればコメントアウトしているところ、 DOM要素を指定して値をテキストボックスに入れたり フォームをボタンによりクリックしてサブミットもしたいです。 ちなみに、setTimeout を利用しているのは、遷移が終わり、子ウィンドウの要素が確実に作成されている状態にするためです。 また、遷移先にSSLを設定している部分と設定していない部分があり、javascriptの途中で"ここに遷移していいですか?"みたいなダイアログが表示されます。"混雑しているページの処理"をインターネットオプションから"有効"にする(ダイアログを表示するではなく)と表示されないのですが、奨励されないので 他にいい方法はないでしょうか。

  • 任意のフォーム名・部品名に対応したいのですが・・・

    始めまして。 カラーパレットのphpを作り、親ウィンドウのテキストボックスにカラー値を 引き渡す部分に以下のようなjavascriptを作りました。 function set_color(color) { window.opener.document.form1.name_color.value = color; } (フォーム名:form1 テキストボックス名:name_color) 一応これでも動作するのですが、これではテキストボックスごとに別々のphpプログラムを用意しなければなりません。 そこで、引数を使い function set_color(form_name, txt_name, color) という形でフォーム名とテキストボックス名を任意に指定したいのですが window.opener.document.form1.name_color.value = color; の部分をどう書きかえればいいのかわかりません。 どうか、よろしくお願いします。

  • submit関数の使い方

    javascript部分 function sendform(formname){ document.formname.submit(); } html部分 <form action="test.html" method="post" name="form1"> <input type="text" name="textvalue" value="1"> </form> <a href="javascript:void(0)" onclick="sendform('form1'); return false;">click1</a> <form action="test.html" method="post" name="form2"> <input type="text" name="textvalue" value="2"> </form> <a href="javascript:void(0)" onclick="sendform('form2'); return false;">click2</a> 今は、上記のように書いています。引数でフォーム名を渡し、その値によって送信フォームを変えたいのですがうまくいきません。if文を使って if(formmei=="form1"){ document.form1.submit(); }else if(formmei=="form1"){ document.form2.submit(); } という方法も考えたのですが、フォーム名だけ変えることができないかと考えています。 よろしくお願いします。

  • 別ウィンドウへのsubmitの挙動がおかしいです

    はじめまして。 ページ内の押下したボタン/リンクに応じて、それぞれ別の新しいウィンドウにフォームの値を渡して処理を行うプログラムを作成しています。 リンク1押下→ウィンドウAを開く→アドレス1に遷移 リンク2押下→ウィンドウBを開く→アドレス2に遷移 ボタン3押下→自画面でアドレス3に遷移 フォームは共通で、JavaScript内でウィンドウ及びアクションの指定を行っています。 しかし、実際に動かしてみると、以下の問題が起こりました。 ・ウィンドウを開いた後、いつまでも遷移しない(する時もある) ・ウィンドウを開いた後、意図しないアドレスに遷移することがある  具体的には、新規ウィンドウで、現在開いているアドレスへの遷移 ・フォームの値が送信されないことがある(する時もある) いろいろ調べてみたのですが、原因がわかりません。 お力を貸していただけないでしょうか。 文末に抜粋したソースを掲載します。 ブラウザはIE7、関連あるかは分かりませんが、PHPとsmartyを使っています。 宜しくお願いいたします。 【JavaScript部分】 function action1(){ document.form.action = "http://www.yahoo.co.jp" document.form.target = "_self"; document.form.submit(); } function action2(){ window.open("", 'win2', 'width=400, height=300'); document.form.action = "http://www.google.co.jp" document.form.target = "win2"; document.form.submit(); } function action3(){ window.open("", 'win3', 'width=400, height=300'); document.form.action = "http://www.msn.co.jp" document.form.target = "win3"; document.form.submit(); } 【HTML部分】 <form name="form" method="post" action=""> <input type="text" name="text1" value=""> <a href="javascript:action2();">リンク1</a> <a href="javascript:action3();">リンク2</a> <input type="button" value="ボタン3" onClick="action1()"> </form>

  • テキストフォームの未入力チェック

    お世話になります。 Javascriptでテキストフォームの入力チェックを行っております。 テキストフォームにはDBから取得した値が入っており、その値を変更して更新できるプログラムを作ろうとしています。 テキストフォームが未入力だった場合に元の値を入れてPOSTリクエストを投げたいのですが方法が分かりません。 (よく見かける未入力だったらアラートを出すというのは出来るのですが・・・) 以下ソースの抜粋になります。 function check(){ for(i=0; i<document.iform1.length;i++){ if(document.form1.elements[i].value==""){ document.iform1.elements[i].valueに元の値を入れたい。 } } <form name="form1" action="updata.php" method="POST"> <input type="button" name ="save" value="更新" onClick="check()"> </form> 以上、ご教示よろしくお願いいたします。

  • Request.formの値の初期化

    こんにちは! submit処理を行うとそのフォーム内の値をRequest.formで 取って来れますが、この値を取得した後、Request.formの 値をJavascriptで初期化したいのですが可能ですか? ラジオボタンをクリックした時に初期化したいのです。 ご存知でしたら教えて下さい。

  • 親フォームのHiddenに子フォームから設定は可能ですか?

    標記の通り、opener.windowにて、親フォームと子フォームを関連付けし、 子フォームで値を入力、close.windowをする際に親フォームのtextfield等に値を設定しております。 その後、設定された値を用いて、親フォームから登録処理等を行っています。 その際に、textFieldには問題なく値がセットされるのですが、どうもHiddenにはセットされていないようです。 そもそもTextfieldも、ソースを見る限りでは内容は書き換わっておりませんでした。 やはり見た目上でのみ設定され、ソース自体はまったく変わらない。 =ソース上でのみ存在するHiddenの値を、JavaScriptで変更することは不可能、という事なのでしょうか? ------------------------------ //親フォームと関連付け function LoadSet(){  oya_win = opener.window; } //フォームclose時に値をセット function oyaMsgSet(){  oya_win.document.フォーム名.elements['Hidden_Name[]'][cnt].value = "1";←ダメ  oya_win.document.フォーム名.elements['Txt_Name[]'][cnt].value = "設定値"←OK }

専門家に質問してみよう