アレルギー対策、自宅でできる効果的な方法とは?

addEventListener()の引数の設定について で keydown とclick どちらも設定したいのですが、そんなことは可能でしょうか?

A 回答 (3件)

>prototype.に定義しているのは、何か理由



documentがつかめればなんでもいいんです
一義的にdocumentがHTMLDocumentなのでそれを利用しました。
場合によってはprototypeではなく直接メソッドを作成することも可能です
機能拡張はprototypeで行えば同じレベルの要素については
同じ挙動をするようになるので便利です

たとえば、NodeListやHTMLCollectionなど
    • good
    • 1
この回答へのお礼

ありがとうございます。てっきりprototype.に定義するのは、業界の掟のようなものかと思っていました。とても勉強になりました。こういったのは、購入した書籍にのっていないので、感謝します。

お礼日時:2017/07/13 23:02

たとえばこんな感じでどうでしょう?



<script>
HTMLDocument.prototype.addEventsListener=function(x,y,z){
var doc=this;
Array.prototype.map.call(x,function(i){
doc.addEventListener(i,y,z);
},doc);
}
document.addEventsListener(['click','keydown'],function(e){
console.log(e.type);
});
</script>
    • good
    • 1
この回答へのお礼

自作ですね。すごいですね。ありがとうございます。
console.dir(HTMLDocument);で確認しましたが、prototype.に定義しているのは、何か理由があるのでしょうか?

お礼日時:2017/07/13 17:25

こんにちは



一つの要素に一つのリスナー設定のようです。
https://developer.mozilla.org/ja/docs/Web/API/Ev …


どうしても複数同時に設定なさりたいのであれば、自作するしかないでしょう。
 DOMElement.addEventListeners(types, listener [, useCapture])
のような考えで、設定時にはtypesを分解して設定するようにしておけばよいのでは?
 types.split(",").map(function(t){
  element.addEventlistener(t, listener, useCapture);
 });
みたいな感じでしょうか。

まぁ、こんなことしなくても、記述のしようはあると思いますけれど・・・
    • good
    • 1
この回答へのお礼

ありがとうございます。慣れてないので、Urlとても参考になります。自作についても勉強になります。

お礼日時:2017/07/13 17:21

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

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

Q変数にドットをいれることはかのうでしょうか?

変数にドットをいれることはかのうでしょうか?
var text = '.......';
alert(text);

Aベストアンサー

#1さんの提示されたとおり「変数名」にドットは入れられませんが
命題の変数内にドットを入れる=ドットを含む文字列は
提示されているソースがそのまま動きますよね?

<script>
var text = '.......';
alert(text);
</script>

Qfor文の部分を日本語で教えてください

for文の部分を日本語で教えてください

Aベストアンサー

> これだと2が素数として表示されなくないですか?

数 i が素数なのか判定する数 j は、1 より大きく自分自身より小さい数の全てです
→ i = 2 の場合、数 j は 1 より大きく 2 より小さい数の全て
→ つまり自然数の j は存在しません

数 i の約数に、数 j が含まれていたら、それは素数ではありません
→ i = 2 の場合、自然数 j が存在しないので、含まれているわけがない
→ ゆえに 2 は素数です

QJavascriptでのJSONデータの使い方

phpスクリプトで、2つのコンボボックスを連動させる処理を書こうとして躓いているので教えて下さい。

勘定科目(コンボボックスA)を選択すると、それに付随する補助科目(コンボボックスB)を選択させる、というものです。

コンボボックスAをクリックした時に、JabascriptでコンボボックスBの中身を入れ替える例はネット上での記事でよく見かけるのですが、コンボボックスの中身をデータベースで設定する必要があるため、その部分はJavascriptでは無理なことは判りました。

このため、データベースのアクセス部分はPHPで取得して、配列に書き出し、Javascript内で、その配列からコンボボックスAの選択値に従って絞り込みを行って、コンボボックスBの中身を置き換えることが出来れば可能だと思いつきました。

そのためには、PHPで作成した配列を、Javascriptに渡してその値にアクセスする方法さえわかれば何とかなりそうだと思い、配列をJSONデータに変換して、Javascriptに渡して処理をするサンプルを作ってみました。

しかし、JSONデータの使い方、Javascriptに渡した時、どんな構造になっているのか判らず、その取扱い方がよく判りません。

下記のようなデータのアクセス方法を教えて頂けないでしょうか?

<html>
<head>
</head>
<body>
<?php
// コンボ2の値を配列にセット。実際にはデータベースにアクセスして取得する
$hjary=array();
$hjary[] = array('kmcd'=>'1111', 'hjcd'=>'1', 'name'=>'現金');
$hjary[] = array('kmcd'=>'1111', 'hjcd'=>'2', 'name'=>'小口現金');
$hjary[] = array('kmcd'=>'1112', 'hjcd'=>'1', 'name'=>'三菱UFJ');
$hjary[] = array('kmcd'=>'1112', 'hjcd'=>'11', 'name'=>'三井住友');
$hjary[] = array('kmcd'=>'1112', 'hjcd'=>'1', 'name'=>'名古屋');
$hjary[] = array('kmcd'=>'1113', 'hjcd'=>'1', 'name'=>'日本生命');
$hjary[] = array('kmcd'=>'1113', 'hjcd'=>'2', 'name'=>'住友生命');
foreach($hjary as $hj)
echo '科目CD:'.$hj['kmcd'].' 補助科目CD:'.$hj['hjcd'].' 名称:'.$hj['name']."<br>";
$hj = json_encode($hjary);
?>

<SCRIPT type ="text/javascript">
var ary = JSON.parse('<?php echo $hj; ?>');
</SCRIPT >

<SCRIPT type = "text/javascript">
<!--
function sel2_change()
{
var sel1 = document.forms.f1.sel1;
var sel2 = document.forms.f1.sel2;

var selkey = sel1.options[sel1.selectedIndex].value;
//
// ここでJSON?配列?の値から動的にコンボボックスにセットしたい
//
sel2.options[0] = new Option(xxx);
sel2.options[1] = new Option(yyy);
sel2.options[2] = new Option(zzz);
}
-->
</script>

<form name="f1" action="ary02.php" method="post">
<SELECT name=sel1 onChange="sel2_change()">
<option name=1111 value='1111'>現金
<option name=1112 value='1112'>当座預金
<option name=1113 value='1113'>有価証券
</SELECT>

<SELECT name=sel2>
</SELECT>
<input type="submit" name="submit" value="検索" onclick="return checkForm();" />
</form>

</body>
</html>

phpスクリプトで、2つのコンボボックスを連動させる処理を書こうとして躓いているので教えて下さい。

勘定科目(コンボボックスA)を選択すると、それに付随する補助科目(コンボボックスB)を選択させる、というものです。

コンボボックスAをクリックした時に、JabascriptでコンボボックスBの中身を入れ替える例はネット上での記事でよく見かけるのですが、コンボボックスの中身をデータベースで設定する必要があるため、その部分はJavascriptでは無理なことは判りました。

このため、データベースのア...続きを読む

Aベストアンサー

<!-- PHP で埋め込み -->
<script type="application/json" name="hojokamoku">
<?php echo json_encode($hjary); ?>
</script>

<!-- JS で読み取り -->
<script type="text/javascript">
var 補助科目一覧 = JSON.parse(document.scripts['hojokamoku'].textContent);
補助科目一覧.forEach(function(v){
_ if (v.kmcd != 画面選択した勘定科目) return;
_ var option = document.createElement('option');
_ option.data = v.hjcd;
_ option.textContent = v.name;
_ 補助科目のSELECT要素.appendChild(option);
});
</script>

QHTML5のことについてなのですが……

私は現在javascriptのものをHTML5に書き換えるということをしています。
色々な方に手伝ってもらったのですが、どうにも後少しが届きません。
モノは
https://chaos.keiei.shikoku-u.ac.jp/ProtoType/
をHTML5に書き換えたいと思っているのですが、詳しい方、また教えるのが苦ではない方はどうかお力をお貸しいただけないでしょうか?
私は圧倒的に知識が不足していて、あまりわかりませんので。

Aベストアンサー

こんにちは

>javascriptのものをHTML5に書き換えるということをしています
意味がよくわかりません。
「HTML4.0をHTML5に」などであればわかるのですが・・
ほとんどがjavascriptで生成されているページをjavascriptを使用しないように書き換えたいという意味にも取れますが、ご提示のページのような場合、採点をするのには何らかのプログラムが必要になると思います。

javascriptを排除したいのなら、その部分をどのような仕組みで代替しようと考えていらっしゃるのでしょうか?
例えば、サーバ側のプログラムで採点するというものも考えられますが、その場合は構成がまったく別のものになると思われます。

一方で、ご提示のページはjavascriptを利用する前提で作成されているように見受けられますが、単にマークアップをHTML5になさりたいということであれば、
 http://www.htmllint.net/html-lint/htmllint.html
などを利用してチェックすることで、比較的簡単に実現できると思います。

ちなみに、以下はご提示のページをチェックしてみた結果です。
◇修正した方が良さそうな指摘
line 9:<HEAD>〜</HEAD> 内には <TITLE> が必要です。
line 20:<H3> の ID 属性の値 `q_title` は 18行目ですでに使われています。

◇厳密には正しくないかもしれないが、かなり軽微な指摘
line 31:<BUTTON> には TABINDEX 属性を指定するようにしましょう。
line 31:<BUTTON> には ACCESSKEY 属性を指定するようにしましょう.
line 37:<BUTTON> には TABINDEX 属性を指定するようにしましょう.
line 37:<BUTTON> には ACCESSKEY 属性を指定するようにしましょう。
line 63:<BUTTON> には TABINDEX 属性を指定するようにしましょう。
line 63:<BUTTON> には ACCESSKEY 属性を指定するようにしましょう。


なお、ご提示のページはdivを主体とした構成になっているようですが、HTML5では、内容を示すための要素(section article nav header footerなど)が追加されていますので、意味を持たないdiv要素はこれらに属さない場合に用いるようになっているようです。
以下はHTML5の解説サイトの一例です。ご参考まで。
http://www.html5.jp/

javascriptの内容は見ていませんが、どこかが思ったように動作しないということであれば、「◇◇の際に○○を△△にしたいのだけれど、××になってしまう」といったように具体的に質問をなさらないと、
>どうにも後少しが届きません。
というだけでは、何をなさりたいのかは「知る人ぞ知る」ということになってしまいます。

こんにちは

>javascriptのものをHTML5に書き換えるということをしています
意味がよくわかりません。
「HTML4.0をHTML5に」などであればわかるのですが・・
ほとんどがjavascriptで生成されているページをjavascriptを使用しないように書き換えたいという意味にも取れますが、ご提示のページのような場合、採点をするのには何らかのプログラムが必要になると思います。

javascriptを排除したいのなら、その部分をどのような仕組みで代替しようと考えていらっしゃるのでしょうか?
例えば、サーバ側のプログラ...続きを読む

Qcsvファイルを読み込み、該当項目をhtmlに表示する方法

下記のようなcsvファイルがサーバ上にあり、毎日最新情報に更新されます。
サーバ上の同階層にあるHTMLページに、csvファイルの一部に該当する項目を
表示したいのですが、どのようにしたら実現できるのかわかりません…。
どうか助けてください。よろしくお願いいたします。

■csvファイル(data.csv)
種類,国,売上目標,売上実績,前年売上
りんご,国内,100,90,80
バナナ,国内,100,80,90
りんご,海外,100,110,100
バナナ,海外,100,50,80

■HTMLページ(index.html)
売上達成率【国内】りんご90% (前年比+10) | バナナ80%(前年比-10)
売上達成率【海外】りんご110%(前年比+10)| バナナ50%(前年比-30)

※マイナスになっている場合は赤字にしたいです。

Aベストアンサー

No.5&6です。何も表示されなかったとのことですので、
試しにfc2にアップロードしてみましたので、下記URLでも表示されないでしょうか。

https://fjicode.web.fc2.com/gooqa/9928341/index.html

もし上記サイトでうまく表示されましたら、上記サイトのソース表示から取得した方が手っ取り早いかもしれません。

Qgetnameを3個ともabcに変えても特に問題なくプログラムは動きます。

しかし、extendsは一つしかないのですが他のスペルに変えたら動きません?
何処で管理さているのでしょうか?
 以下プログラムです。
 よろしくお願いします。
<!DCTYPE html>
<html>
<head>
<title>P270派生クラス継承とオーバーライト</title>
</head>
<body>

<?php

$usr1 = new User("鈴木",56, "mmm@nnn.nn.jp", "03-xxx-xxx");

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>名前</th>
<th>年齢</th>
<th>アドレス</th>
<th>電話</th>
</tr>

<?php

print "<tr><td>";
print $usr1->getname();
print "</td><td>";
print $usr1->getage();
print "</td><td>";
print $usr1->getadr();
print "</td><td>";
print $usr1->gettel();
print "</td><tr>";

?>

</table>

<?php

class person
{
protected $name = "姓名";
protected $age = 20;

public function __construct($nm,$ag)
{
$this->name = $nm;
if($ag>=20 && $ag<=60){
$this->age = $ag;
}
else
$this->age = -1;
}
public function getname(){return $this->name;}
public function getage(){return $this->age;}
}

class User extends person
{
private $adr = "xxx@xxx.xx.xx";
private $tel = "xx-xx-xxxx";

public function __construct($nm,$ag,$ad,$tl)
{
parent::__construct($nm,$ag);
$this->adr = $ad;
$this->tel = $tl;
}
public function getname(){return"会員:" . $this->name;}
public function getadr(){return $this->adr;}
public function gettel(){return $this->tel;}
}
?>

</body>
</html>

しかし、extendsは一つしかないのですが他のスペルに変えたら動きません?
何処で管理さているのでしょうか?
 以下プログラムです。
 よろしくお願いします。
<!DCTYPE html>
<html>
<head>
<title>P270派生クラス継承とオーバーライト</title>
</head>
<body>

<?php

$usr1 = new User("鈴木",56, "mmm@nnn.nn.jp", "03-xxx-xxx");

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>名前</th>
<th>年齢</th>
<th>アドレス</th>
<th>電話</th>
</tr>

<?php

print "<tr><td>"...続きを読む

Aベストアンサー

> getnameを3個ともabcに変えても特に問題なくプログラムは動きます。

getnameは関数名であり、条件はありますが名前はプログラマが自由に決めることができます。
ですから、abcに書き換えても動作します。


> extendsは一つしかないのですが他のスペルに変えたら動きません?

extendsは、PHPの予約語(キーワード)として登録されており、特別な意味を持ちます。
従って書き換えるとエラーになります。


キーワードのリスト
http://php.net/manual/ja/reserved.keywords.php

QJIS8の半角かな文字をUnicodeの全角文字への変換について

Java1年目の初心者です。

質問もどのように説明していいかわからなかったので、
至らないところもあるかと思いますが、どうぞ宜しくお願いします。

JIS8の半角カナ文字をUnicodeの全角文字へ変換するロジックを考えております。
やりたいことは以下になります。

①JIS8の変換元テーブル、Unicodeの変換後テーブルをint型の配列に定義します。

//JIS8のテーブル
static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};
//Unicodeのテーブル(以下の文字コードはUnicodeの全角コードではありません)
satic final int[] UNICODETABLE = {0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX};

②HashMapのKeyに変換元テーブルの値、Valueに変換後テーブルの全角のコードを設定しています。
static Map<Integer,Integer> conTable = new HashMap<Integer,Integer>();
static
{
conTable.put(JISTABLE[0],UNICODETABLE[0]);
conTable.put(JISTABLE[1],UNICODETABLE[1]);
conTable.put(JISTABLE[2],UNICODETABLE[2]);
conTable.put(JISTABLE[3],UNICODETABLE[3]);
conTable.put(JISTABLE[4],UNICODETABLE[4]);
conTable.put(JISTABLE[5],UNICODETABLE[5]);
conTable.put(JISTABLE[6],UNICODETABLE[6]);
conTable.put(JISTABLE[7],UNICODETABLE[7]);
}

③指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い、HashMapのKeyに存在したらValueの全角文字を返すということを
やりたいのですが、英数字は問題なく変換できるのですが、半角のカナがうまく変換されません(HashMapのKey値とマッチしない)
16進数で確認しても期待した文字コードになりません。

JIS8においての半角かなは何か特殊なのでしょうか?
また、どうやればKey値とマッチするようにできるのでしょうか?
ご教授いただければと思います。

Java1年目の初心者です。

質問もどのように説明していいかわからなかったので、
至らないところもあるかと思いますが、どうぞ宜しくお願いします。

JIS8の半角カナ文字をUnicodeの全角文字へ変換するロジックを考えております。
やりたいことは以下になります。

①JIS8の変換元テーブル、Unicodeの変換後テーブルをint型の配列に定義します。

//JIS8のテーブル
static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};
//Unicodeのテーブル(以下の文字コードはUnico...続きを読む

Aベストアンサー

> //JIS8のテーブル
> static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};

JIS8の半角カナなら、8bitのはずですが、0xFFb1 などと、16bitが混じってます。
どういうことでしょうか?
(ついでに、UnicodeのFFB1、FFB2等は半角カナではありません)

byteの配列としてJIS8を取り込んだのなら、8bitしかないJIS8の文字が 32bitの 0xffb1 と一致するはずがありません。

> 指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い

この文字列は、どのように取り込んだものでしょうか?
その段階で、JIS8ではなくなっているとかは、考えられませんか?
例えば、 ファイルからStringへ読み込んだ段階で、内部用のコードに変換がかかってるとか。


外部のJIS8
→Java内部にStringとして取り込み(Unicodeに変換)
→ Stringで半角カナから全角カナ変換
(例 http://www7a.biglobe.ne.jp/~java-master/samples/string/HankakuKatakanaToZenkakuKatakana.html)

とするのがいいように思います。

> //JIS8のテーブル
> static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};

JIS8の半角カナなら、8bitのはずですが、0xFFb1 などと、16bitが混じってます。
どういうことでしょうか?
(ついでに、UnicodeのFFB1、FFB2等は半角カナではありません)

byteの配列としてJIS8を取り込んだのなら、8bitしかないJIS8の文字が 32bitの 0xffb1 と一致するはずがありません。

> 指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い

この文字列は、どのように取り込んだものでしょう...続きを読む

QC++を学ぶためにCの知識は必須ですか?

将来の就職と個人的興味のため、C++を勉強しようと思ったんですが(C++にはオブヘクト志向があるため)ネットでいろいろ調べていると「Cが基盤になっているためCから勉強を始めたほうがいい」とありました。
正確にはどこまでの知識と経験が必要ですか?
そもそもC++を学ぶためにCの知識は必須ですか?

Aベストアンサー

まあ、Cの言語仕様を一通り軽くやっといた方が良いかも。
ポインター、配列、構造体、整数演算、型の表記の仕方とかは
結構癖があるから、事前に知っといた方が良いでしょう。

Cの言語仕様ってC++に比べて驚くほど小さいので
そんなに時間はかからないと思う。
最初からクラスも大変だし、最初はベターCから
始めるのも良いのでは。

しかし就職にC++が役立つかというと、確かに
c++使いまくりのシステムもあるが
Javaの方が圧倒的に有利というのは
覚えておいた方が良いでしょう。

Qhtmlでjpg画像をアップロードして、相手のパソコンかスマホにダウンロードさせたい。

お疲れ様です。
写真(同窓会)を郵送するには費用がかかります。
そこで、ホームページをから、相手がダウンロードできるようなに
プログラムを組みたいのですが!忘れてしまいました。
 現在作成中のホームページは、写真の閲覧のみです。
どんなプログラムを組めば相手のパソコン、スマホへダウンロード
できようになりますか?

Aベストアンサー

ダウンロードさせる?

無理ですよ、相手の人にダウンロードしてもらうようにしましょう

https://30d.jp/
写真共有サービスを利用して、画像をアップロード
参加した人にしか見えないようにパスワードを設定して、URLとパスワードをメールで送ってダウンロードしてもらいましょう


既にHPを持ってるのなら、そこにアップロードして、その画像のURLを教えて右クリックで保存してもらえばいいですよ

QC言語について(三角形の面積・double型)

現在C言語を勉強中のものです。
以下のプログラムを実行すると、面積の計算結果が0になってしまいます。
doubleを全てintに、%fを全て%dにするとうまく動くのは確認したのですが、
自分が作りたいのは、引数をdoubleにし、実行結果も小数点込みで計算するものです。

以下のプログラムの問題点とその理由、またどのように書き換えることでうまく動くのかを教えていただけたらと思います。
よろしくお願いいたします。

~~以下コード~~
#include <stdio.h>

double tri(double,double);

int main(){
   double takasa,teihen;
   double menseki;
   printf("takasa=");
   scanf("%f",&takasa);
   printf("teihen=");
   scanf("%f",&teihen);
   menseki = tri(takasa,teihen);
   printf("menseki = %f",menseki);
}

double tri(double n1,double n2){
   return n1*n2/2;
}

~~以下実行結果~~
takasa=3
teihen=4
menseki = 0.000000

現在C言語を勉強中のものです。
以下のプログラムを実行すると、面積の計算結果が0になってしまいます。
doubleを全てintに、%fを全て%dにするとうまく動くのは確認したのですが、
自分が作りたいのは、引数をdoubleにし、実行結果も小数点込みで計算するものです。

以下のプログラムの問題点とその理由、またどのように書き換えることでうまく動くのかを教えていただけたらと思います。
よろしくお願いいたします。

~~以下コード~~
#include <stdio.h>

double tri(double,double);

int mai...続きを読む

Aベストアンサー

doubleのフォーマット指定子は%fではなく%lfです
とりあえずそこを変えてみて実行してみてください


人気Q&Aランキング

おすすめ情報