テキストボックスが2つあり(AとBとします)、
AにはonBlur時に、BにはonFocus時に処理を行うようにしています(実行処理はそれぞれ別物)。

この状態でAからBにカーソルを移すと、
BのonFocus処理を行い、その後AのonBlur処理を行ってしまいます。

AのonBlur→BのonFocusという順番で処理をしたいのですが、これは可能なのでしょうか?
また、イベントハンドラの発生順序(処理順序?)には決まりがあるのでしょうか?

A 回答 (2件)

<input id=a onBlur=alert("aB")>


<input id=b onFocus=alert("bF")>

↑のソースだと、a から b にカーソルを移すと
alert("aB") → alert("bF")
となりました。

puntoabartさんはもっと複雑な処理をさせていて、
その中で逆になってしまっているんだと思います。
たぶん思いどうりにできますよ。

この回答への補足

確かに、onBlur処理はforやifがたくさん入った複雑なものになっています。

ところで、複数のイベントハンドラの処理は並行して行っているのでしょうか?
もし、並行して行っているならonBlur開始→onFocus開始となり、
処理が複雑なonBlurが終わる前にonFocusが終わってしまうのかもしれません。

補足日時:2001/03/08 09:12
    • good
    • 0

処理が並行して行う という部分が分かりませんでした。


onBlurが終わる前にonFocusが終わってしまう という部分も
分かりませんでした。

この回答への補足

変なたとえかもしれませんが、「ご飯を食べる」という行動と「新聞を読む」という行動を考えてみましょう。

処理を並行して行う、というのは
「ご飯を食べながら新聞を読む」イメージです(行儀は悪いですが)。
余談ですが、並行に対する概念として「連続」という処理方法もあります。
これは、「ご飯を食べ終わってから新聞を読む」というイメージです。

『onBlurが終わる前に~』については、
「onBlur処理が完了する前にonFocus処理が完了する」
ときっちりと書けばよかったかもしれません。

ご飯と新聞のたとえで言うと、
「ご飯を食べている途中で新聞を読み始め、先に新聞を読み終えてしまう」といったところです。

補足日時:2001/03/09 09:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q英訳 順番について

日本の都道府県を、北のほうから1.北海道、2.青森、というふうに
北を優先して若い番号をつける場合

「Prefectures are numbered from north to south.」

でいいでしょうか?もっとわかりやすく書く方法はないでしょうか?

Aベストアンサー

それで十分と思いますが、
"in sequence" (順番に)を入れても良いかも知れません。
Prefectures are numbered in sequence from north to south.
又、例を入れれば完璧でしょう。
(e.g. 1. Hokkaido, 2. Aomori, etc)

Qイベントハンドラに処理を追加するには?

例えばbodyタグのonloadイベントハンドラに
JavaScriptを使って処理を追加するにはどうすればよいのでしょうか?

例)
・rei.htm
<html>
 <script language="JavaScript" type="text/javascript">
 function hoge(){
  alert("hogeです");
 }
 function foo(){
  alert("fooです");
 }
 </script>
 <body onload="hoge();">
 </body>
 <script language="JavaScript" type="text/javascript">
 document.body.onload += foo();
 </script>
<html>
※前提条件として、変更可能な箇所はscriptタグ内のみとなります。


「こんなんでいけないかな?」と思って上記のようにやってみたのですがうまくいきませんでした。
(結果はfoo()のみ実行され、hoge()は実行されませんでした。
alertでbody.onloadの中身を確認すると『function anonymous{hoge();}undefined』と表示されるので、なぜfoo()が実行されてhoge()が実行されないのかよくわかりませんが‥)

また試しに
document.body.onload += foo();
これを以下のように変更してみました。
document.body.onload = foo();

この時は、

・foo()の実行
 ↓
・javascriptエラー
 ↓
・hoge()の実行

となりました。(これもなぜこうなるのかよくわかりせん)

以上、イベントハンドラに最初から任意に入れられている処理を残しつつ、
さらに処理を加えるにはどうすればよいのかご教示お願いします。

例えばbodyタグのonloadイベントハンドラに
JavaScriptを使って処理を追加するにはどうすればよいのでしょうか?

例)
・rei.htm
<html>
 <script language="JavaScript" type="text/javascript">
 function hoge(){
  alert("hogeです");
 }
 function foo(){
  alert("fooです");
 }
 </script>
 <body onload="hoge();">
 </body>
 <script language="JavaScript" type="text/javascript">
 document.body.onload += foo();
 </script>
<html>
※前提条件として、変更可能...続きを読む

Aベストアンサー

> onloadイベントは、通常JavaScriptからwindow.onloadとして実装すべきと考えておいてよいのでしょうか?

この点に関しては、実は私もはっきりとした根拠があるわけではないんです^^; そういう動作だから、というだけで。(ちょっと検索してみましたが、はっきり説明してくれているところは見当たりませんね・・・)

一見、<body onlaod=~ はwindow.onloadとは別物のように思えるのですが、結局window.onloadに登録されるのは一緒です。IEにおけるdocument.body.onloadも同様です。本来の意味からすると、<body onload=~やdocument.body.onloadはbody部の読み込み完了時に実行されるべきな気もするのですが、実行タイミングははwindowと同じでページ読み込み完了時です。
----------------------------------
<html>
<head>
<script>
</script>
</head>
<body onload="alert('body');">
<script>
//↓コメント外すと「body」が「window」になる。それ以外は変化なし。
//window.onload=function(){alert("window");};
//document.body.onload=function(){alert("window");};
alert((document.body.onload == window.onload)); //IEでtrue
</script>
</body>
<script type="text/javascript">
alert("body end"); //<body onload=~ 等よりも前に実行
</script>
</html>
-----------------------------------
参考URL等、いろいろ議論されている話題なのですが、私は単にその場で使いやすいのを使うことにしています。(無論、無計画だと破綻しますが)

個人的な推測ですが、当初、<body onload=~でページ読み込み時の処理を指定できるようにしていて、その後、DOMにするときに他のイベント(onunload等)と合わせるためにwindowオブジェクトへ移管されたのでは・・・と考えています。(IEは親切心(おせっかい?)からdocument.bodyも有効にしているのだと思います)

答えになってないかもしれませんが、参考になれば幸いです。

参考URL:http://www5d.biglobe.ne.jp/~y0ka/2006-12-07-1.html

> onloadイベントは、通常JavaScriptからwindow.onloadとして実装すべきと考えておいてよいのでしょうか?

この点に関しては、実は私もはっきりとした根拠があるわけではないんです^^; そういう動作だから、というだけで。(ちょっと検索してみましたが、はっきり説明してくれているところは見当たりませんね・・・)

一見、<body onlaod=~ はwindow.onloadとは別物のように思えるのですが、結局window.onloadに登録されるのは一緒です。IEにおけるdocument.body.onloadも同様です。本来の意味からすると...続きを読む

Q英訳

i not want leave you
英訳お願いします。
それと、もし単語を置く順番が違かったらお直しお願いします。

Aベストアンサー

I don't want to leave youで「君を放っておきたくない」「見捨てたくない」
のような意味になり、I don't want you to leaveで「行かないで」といった
感じの意味になります。

be動詞(am, are, isなど)の場合は am not, are not(aren't), is not(isn't)で
一般動詞はdo not(don't) want, does not(doesn't), did not(didn't)
といった形の否定形になります。

QonClickとsubmitの処理順序

#過去ログをあたりましたが、自分で納得いく解答がなかったので質問します。

フォームのsubmitボタンにonClickでチェッカーなどの関数を与えた場合、
submitでフォーム内容を送信するのと、onClickで指定されている関数の
どちらが先に処理されるのでしょうか。
(一応、WindowsのIE、ネスケ共々、onClickの処理の後、submitされるようではあります)

function tasikame {
(フォームの内容チェック/中略)
alert("入力されていない項目があります")
}

例えば、このような関数をonClickで起動する場合、フォームに入力されていない
項目があると、警告されます。
この時、submitはどの環境でも起動しないで終わるのでしょうか。
それとも警告が起動した後、フォーム内容はsubmitされてしまうのでしょうか。

#分かりづらければ、補足しますのでどうぞよろしく。

Aベストアンサー

> 例えば、このような関数をonClickで起動する場合、フォームに入力されていない
> 項目があると、警告されます。
> この時、submitはどの環境でも起動しないで終わるのでしょうか。
> それとも警告が起動した後、フォーム内容はsubmitされてしまうのでしょうか。

この関数の書き方だと、警告のメッセージボックスが表示され、OK を押すと、フォームの
内容は submit されます。

イベントハンドラでは、false を返すことで、本来の動作をキャンセルすることができます。
ですから、期待する(であろう)動作をするためには、

function tasikame {
 //フォームの内容チェック
  ...

 if ( フォームの内容が正しくなければ ) {
  alert("入力されていない項目があります");
  return false;
 } else {
  return true;
 }
}

というような書き方になります。

Q以下を英訳するとどうなりますか?

この文をうまく英訳にするとどうなりますか?
「ここからは、2日目、3日目、・・・・7日目の順番で彼が計測できた値を示します」
うまく適切な英文があまりかけずに困っています

Aベストアンサー

「ここからは、2日目、3日目、・・・・7日目の順番で彼が計測できた値を示します。」

The graphic chart(or, diagram) here shows you the values he could measure at day 2, 3 then up to day 7.

ここからはを、「Power Point」なりの「プレゼン・ソフト」の解説文とこちらで勝手に仮定して、書いてみました。 聴衆は「あっ、次は図表なりなんなりが出てくるのだなと思ってくれます」


day 2, 3 and up to day 7 は「day second,third and up to day 7th」と読んで下さい。

QjQueryの処理順序について

function ajaxAddHtml(target_id)
{
$('#' + target_id).html('loading.gif');
if(php_func == "") {
return false;
}
// ↓↓↓Ajaxの処理
}

jQuery + Ajaxで画面の書き換えをする処理を実装しました。
上記のように、処理の冒頭にまずクリックされたボタンをloading画像に置換する処理を入れているのですが、
PCでは想定通り動きますが、iphoneとAndroidで想定通り動きせん。
loading画像に書き換わる前にAjaxでの処理が完了してしまいます。
関数の中のhtml置換処理を、確実に上の行から順番通りに実行させる方法はありますか?

Aベストアンサー

今ではasync:falseは非推奨ですよ。
やりたいことは分かりますが、素直に非同期にして、completeやsuccessの中にajax完了後の処理を書くのが分かりやすいと思います。もし、それができない状況だとしたら、それをできない状況自体を改善すべきです。
あと、最新のjQueryではajaxの使い方も変わってきてる(使いやすくなってる)ので、古いソースではなく、新しいjQueryの情報を確認されたほうがよいと思いますよ。

Q英訳おねがいします。

「それらは改良促進のためにAとBの技術を顧客に提供する仕事です」

上記の英訳をおねがいします。
自分で挑戦してみたのですが、順番から何からわけがわからなくなってしまいました。
どなたかよろしくお願いします。

Aベストアンサー

Those are the jobs to provide the customers with the technologies of A and B to promote improvement.

QjQueryのclickイベントハンドラ

最近jQueryを勉強中でして、練習の意味で自分で以下のようなページを作ってみました。

【ページの内容】
犬、猫、鳥の画像ボタンを配置して、クリックすると各ボタンのalt属性をアラート表示する

【実際のhtml】

<div class="header">
<ul class="menu">
<li><a href="index.html" id="btn1"><img src="dog.png" alt="Dog"></a></li>
<li><a href="index.html" id="btn2"><img src="cat.png" alt="Cat"></a></li>
<li><a href="index.html" id="btn3"><img src="bird.png" alt="Bird"></a></li>
</ul>
</div>


【実際のscript】

$(function(){
var btn1 = $('#btn1');
var photo1 = btn1.find('img');
var name1 = photo1.attr('alt');
btn1.click(function(){
alert(name1);
});
var btn2 = $('#btn2');
var photo2 = btn2.find('img');
var name2 = photo2.attr('alt');
btn2.click(function(){
alert(name2);
});
var btn3 = $('#btn3');
var photo3 = btn3.find('img');
var name3 = photo3.attr('alt');
btn3.click(function(){
alert(name3);
});
});


上記で一応やりたいことは再現はできるのですが、scriptが冗長なのでもっと短くしたいです。
しかしどんなスクリプトにすればよいかわかりません。
宜しければアドバイスお願いいたします。

最近jQueryを勉強中でして、練習の意味で自分で以下のようなページを作ってみました。

【ページの内容】
犬、猫、鳥の画像ボタンを配置して、クリックすると各ボタンのalt属性をアラート表示する

【実際のhtml】

<div class="header">
<ul class="menu">
<li><a href="index.html" id="btn1"><img src="dog.png" alt="Dog"></a></li>
<li><a href="index.html" id="btn2"><img src="cat.png" alt="Cat"></a></li>
<li><a href="index.html" id="btn3"><img src="bird.png" alt="Bird"...続きを読む

Aベストアンサー

同じHTML構造の要素に対する処理なので、固有の名称(idなど)を用いずに、クリックされた要素に対する位置関係や属性などを基に記述する方法にすれば、まとめることができると思います。


具体的な記述はいろいろあると思いますが、一例です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<script type="text/javascript"

src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
 $("ul.menu img").click(function(){
  alert($(this).attr("alt"));
  return false;
 });
});
</script>
</head>
<body>

<div class="header">
<ul class="menu">
<li><a href="index.html"><img src="dog.png" alt="Dog"></a></li>
<li><a href="index.html"><img src="cat.png" alt="Cat"></a></li>
<li><a href="index.html"><img src="bird.png" alt="Bird"></a></li>
</ul>
</div>

</body>
</html>

同じHTML構造の要素に対する処理なので、固有の名称(idなど)を用いずに、クリックされた要素に対する位置関係や属性などを基に記述する方法にすれば、まとめることができると思います。


具体的な記述はいろいろあると思いますが、一例です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<script type="text/javascript...続きを読む

Q次の文の英訳教えてください。

子供のころに忘れられない体験をしたんですね、驚きました。
(3)子供のころに・・・In the days of a child
(2)忘れられない体験・・・An unforgettable experience
(1)したんですね・・・I did it
(4)驚きました・・・I was surprised
この順番でこの英訳であってますか?

Aベストアンサー

1文にまとめるのなら、
(1)私は驚いた I was surprised
(2)あなたが持った you had
(3)忘れられない体験を an unforgettable experience
(4)子供の頃に when you were a child.
と なります。

(4)は色々表現の仕方があります。中学校でも習う
when節にしていみました。

QonFocusを使用して

onFocusを使用して入力フォームを選択
をすると入力フォームの隣のテーブル
の背景色を変更する方法をどなたか
お教えください。
現在は以下のようにしていますが、うまくいきません。

<td id="test" bgcolor="#ff0000"></td>
<td><input type="text" onFocus=change()></td>
として、javascript側で
function change() {
document.getElementById("test").bgcolor = "#0000ff";
}
↑たぶんまったく違うのでしょうが・・・w
よろしくお願いします。

Aベストアンサー

× document.getElementById("test").bgcolor = "#0000ff";

○ document.getElementById("test").style.backgroundColor = "#0000ff";


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報