javascriptの勉強を始めたばかりで、どうしてもわからないことがあるので質問させてください。(まだ初めて一週間程度の初心者です…)

マウスの座標を取得するのはなんとなくわかったのですが、画像の座標をどうやって取得すればいいのかがわかりません。(マウスはevent.offsetで取得してるのでそれに合わせたい)

例えば…
function lyrGetTop(lyr){
return( parseInt( document.getElementById(lyr).style.pixelTop ) );
}
で、画面全体の位置からの座標を取得するのはできたのですが、ブロック内(?)の位置から取得することができません…。
どのようにすればevent.offsetでのマウスの座標ようにブロックを基準とした座標を取得することができますか?



それから、シューティングゲームの自機が弾を連射するようなアルゴリズムがわかりません。

<html>
<head>
<title></title>

<script language="JavaScript"><!--

y = 450;
interval = 20;

function moveBall(){
y = y - interval;

document.getElementById("ball").style.pixelLeft = getlyrleft("ber") + 24;
document.getElementById("ball").style.pixelTop = y;
document.getElementById("ball").style.visibility = "visible";
if( (y < 10) ){
document.getElementById("ball").style.visibility = "hidden";
document.getElementById("ball").style.pixelTop = getlyrtop("ber");
return 0;
}
}

function getlyrtop(lyr){
return(parseInt(document.getElementById(lyr).style.pixelTop));
}

function getlyrleft(lyr){
return(parseInt(document.getElementById(lyr).style.pixelLeft));
}


// --></script>

</head>

<body onclick="setInterval('moveBall()',1)">
<img src="bb01.gif" id="ball" style="position:absolute; visibility:hidden" left:0px;top:16px;">
<img src="bb03.gif" id="ber" style="position:absolute; left:445px; top:459px;"/>
</body>
</html>


これだと、連射どころか、二回目のクリックに反応すらしないんです…。

どうかご教授お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

かいせつかぁ~。


へんなかきかただものね~。

>var FEND = true;
この変数は、ゲームのループを終了させるために使っている。
たとえば
if (FEND == true) { setTimeout(LOOP,10) }
と書けばよいのだけど
if (FEND) setTimeout(LOOP,10);
これも同じ。さらに
FEND && setTimeout( LOOP, 10);
これも同じ。



>var Pmouse = {x:240, y:600};
は、マウスの座標の初期値として利用している
例えば、
Pmouse = [240,600];
とすると、600の値を取得するのに
Pmouse[1]としなければならない。これだと可読性が悪い!
(ってこんなコードを書いてるのに可読性とはおかしいね)
Pmouse.y とすると 600が取得できる



>document.getElementById('waku').onmousemove = function (evt) {
>evt = evt ? evt: window.event;
これは、このマウスオーバーしたときのイベントを取得するため
残念ながら、IEではevtにイベントが代入されない。なので
evt が何も無かったら window.event を代入している。
三項演算子っていったかな?
evt = evt ? evt: window.event;
を普通に書くと
if (evt == undefined) evt = window.event; else evt = evt;


FEND = teki.y < 600;
は、teki.y < 600 を評価して、条件が満たされれば、trueがFENDに代入される
つまり敵のY座標が600より小さければ、ゲームを継続する。
これも普通に書けば、
if (teki<600) { FEND = true; }
と同じ。



>FEND && setTimeout(LOOP1, 20); //これはclearTimeoutはする必要はないのでしょうか?
setTimeoutは一度しか使われないので、実行されればそれで終わり。



>jiki.x += (Pmouse.x < jiki.x -8 ) * -4 + (Pmouse.x > jiki.x +8) *4;
これを普通に書けば、
if (Pmouse.x < (jiki.x - 8)) jiki.x = jiki.x -4;
if (Pmouse.x > (jiki.x + 8)) jiki.x = jiki.x +4;
となる。
例えば
a = (何かの条件式) * 4;
の場合、条件が成立すると、trueなんだけど、掛け算するときは、数値の1と解釈できる!と
覚えておけばいいのかも?
ちなみに±8は、マウスのマージンね。止めたいときに、判定を甘くしてる。


>FEND && setTimeout(LOOP2, 60);
>第二引数の数字が敵か自機かなどによって数字が違うのもどうしてでしょうか?
ゲームを作るうえで、キャラクターの動き、つまりバランスは非常に大事。
第二引数で、キャラクターの速度の調節が簡単にできる。
早く動かそうとして、4ドットを8ドットづつにするのは、好きじゃない。



>cloneNode(false);
今回は、画像の'TAMA'に利用しているけど、これは画面上に何個出現するかわからない
玉にたいして、画像をたくさん用意するより、1つ隠しておいて、それをコピーして
使っている。appendChildは、コピーしたものを出現させる!という意味かな?
appendChildすると
HTML上は
<div id="waku">
<img src="jiki.png" width="20" height="20" alt="自機" id="JIKI">
<img src="teki.png" width="20" height="20" alt="敵機" id="TEKI">
<img src="tama0.png" width="20" height="20" alt="玉" id="TAMA">
<img src="tama0.png" width="20" height="20" alt="玉">
<img src="tama0.png" width="20" height="20" alt="玉">
<img src="tama0.png" width="20" height="20" alt="玉">
<img src="tama0.png" width="20" height="20" alt="玉">
<img src="tama0.png" width="20" height="20" alt="玉">
<img src="tama0.png" width="20" height="20" alt="玉">
<img src="tama0.png" width="20" height="20" alt="玉">
</div>
なふうになっていると思う。


>if (y>4) setTimeout(LOOP3, 20); else {
>document.getElementById('waku').removeChild(e);
>}//自分でしらべたところ、appendChildとcloneNodeはわかったのですが(なんとなく…)、
>removeChildがどういうことがよくわかりませんでした。

これは、玉が一番上までいったら、必要ないので消している。と考えてね。
HTML内から外す。という意味で。


function getPosition(node) {
var x = 0, y = x;
do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
return {x: x, y:y};
}
は、あなたが求めていた
>画像の座標をどうやって取得すればいいのかがわかりません。(マウスはevent.offsetで取得してるのでそれに合わせたい)
の、回答に近いものです。nodeで指定された要素、つまり今回はid="waku"が、ページ上どこの座標にあるか求めるために
あります。
これで得られた値を、基準としてマウスの座標と引き算すれば、waku内でのマウスの位置がわかります

さて、これでしつもんにぜんぶこたえたかな? ばぶばぶばぶぅ~!
    • good
    • 0
この回答へのお礼

丁寧にありがとうございます!この解説を参考に自分の力でも組めるようにがんばってみます!あまり何度も質問してしまっても迷惑だと思うので、またなにか解決できない疑問にぶちあたったら新しい質問を投稿することにします。
本当にありがとうございました!感謝感激です!

ポイントは1000000ポイントくらいあげたいところですけど…gooがそんなに沢山良回答をつけさせてくれません…!

どうもありがとうございました!

お礼日時:2009/05/31 02:58

こーどのみやすさかだとか、そくどだとか、いろいろかんがえると


おもしろいよ!これは、おくがふか~い。
ぷろぐらむをかくことで、じぶんが、べんきょうしているからね~。
くろーじゃーだとか、おぶじぇくとしこう、だとか
まだまだいっぱいあるじょ!
http://okwave.jp/qa5001540.html
のかいとうも、なにかのさんこうになるかも?
かうんたーなのだけど、すうじがすろっとましーんのようにかいてんして
へんかするじょ!
げーむのとくてんなんかにつかえるかもよ!

やっぱりさいごは、ばぶぅ~!

そうそう、ぽいんとは10000ぽいんとくらいでいいじょ!^^;
    • good
    • 0

解説の訂正


if (teki<600) { FEND = true; }
は、
if (teki<600) { FEND = true; } else { FEND = false; }
    • good
    • 0

れんしゃするこーどを、おうようして、てきもふやしてみたじょ!


もうこうなれば、あたりはんていは、まっぷつくってやるしかないかなぁ~。
きゃらくたーは、あにめーしょんGIFがたのしいかも。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Game</title>
<style type="text/css">
#waku { width:480px; height:640px; border :2px #888 inset; position:relative;background-color:black}
#waku img { position:absolute; }
#TAMA, #TEKI { display:none; }

</style>

<body>
<div id="waku">
<img src="./img/4.gif" width="20" height="20" alt="自機" id="JIKI">
<img src="./img/8.gif" width="20" height="20" alt="敵機" id="TEKI">
<img src="./img/1.gif" width="20" height="20" alt="玉" id="TAMA">
</div>

<script type="text/Javascript">

var offset = getPosition(document.getElementById('waku'));
var jiki = {x: 240, y: 600, e: document.getElementById('JIKI') };
var tama = {x: 0, y:0 , e: document.getElementById('TAMA') };
var FEND = true;
var Pmouse = {x:240, y:600};
var LR = 4;
var LASTE;
var LASTF = 0;

document.getElementById('waku').onmousemove = function (evt) {
 evt = evt ? evt: window.event;
 Pmouse.x = evt.clientX - offset.x;
 Pmouse.y = evt.clientY - offset.y;
}

document.getElementById('waku').onclick = function (evt) {
 start_tama();return false;
// return evt ? evt.preventDefault(): event.returnValue = false;
};

start = function LOOP () {
 //ここに何か書く?

 FEND && setTimeout( LOOP, 10);
};

start_teki = function (x, y) {
 var e = document.getElementById('TEKI').cloneNode(false);
 var memory_down = LR;
 e.id = null;
 document.getElementById('waku').appendChild(e);
 e.style.display = 'inline';
 LASTE = e;
 
 var P = function LOOP1 () {
  if (memory_down != LR) {
   memory_down = LR;
   y += 20;
  } else {
   x += memory_down;
   e.style.top = y + 'px';
   e.style.left = x + 'px';
   if (x < 0 || x > 460) LASTF = 1;
  }
  if (e == LASTE && LASTF == 1) LASTF = 0, LR*=-1;
  FEND = FEND && y < 600;
  FEND && setTimeout(LOOP1, 80);
 };
 P();
};

start_jiki = function LOOP2 () {
 jiki.x += (Pmouse.x < jiki.x -8) * -4 + (Pmouse.x > jiki.x + 8) *4;
 jiki.e.style.left = jiki.x + 'px';
 jiki.e.style.top = jiki.y + 'px';
 FEND && setTimeout(LOOP2, 30);
};

start_tama = function () {
 var x = jiki.x;
 var y = jiki.y;
 var e = document.getElementById('TAMA').cloneNode(false);
 e.id = null;
 document.getElementById('waku').appendChild(e);
 e.style.display = 'inline';
 
 var P = function LOOP3 () {
  y-= 8;
  e.style.left = x + 'px';
  e.style.top = y + 'px';
  if (y>4) setTimeout(LOOP3, 20); else {
   document.getElementById('waku').removeChild(e);
  }
 };
 P();
};

function getPosition(node) {
var x = 0, y = x;
do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
return {x: x, y:y};
}

start();
for(var i=70; i<200; i+=30) {
 for(var j=10; j<300; j+=30) {
  start_teki(j,i);
 }
}
start_jiki();

</script>

この回答への補足

まずはno2の回答から自分のものにしたいと思います!
回答を締め切るときには必ず良回答をつけさせていただきたいと思います。

補足日時:2009/05/30 21:14
    • good
    • 0

どっかにかいたことがあったんだけど、えほんのなかから


みつけられなかった。なのでかいたじょ。ばぶ。
こんな、ぐろーばるへんすうのつかいかただと、みんなにわらわれるか?!
きもちよく、れんしゃしてくれ!
もちろん、あたりはんてい、などない!
ぜんかくはくうはくは、ていきとうになおしてね!

けんとうをいのる。 ばぶぅ~!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Game</title>
<style type="text/css">
#waku { width:480px; height:640px; border :2px #888 inset; position:relative;}
#waku img { position:absolute; }
#TAMA { display:none; }
</style>

<body>
<div id="waku">
<img src="jiki.png" width="20" height="20" alt="自機" id="JIKI">
<img src="teki.png" width="20" height="20" alt="敵機" id="TEKI">
<img src="tama0.png" width="20" height="20" alt="玉" id="TAMA">
</div>

<script type="text/Javascript">

var offset = getPosition(document.getElementById('waku'));
var teki = {x: 0, y: 0, m: 4, e: document.getElementById('TEKI') };
var jiki = {x: 240, y: 600, e: document.getElementById('JIKI') };
var tama = {x: 0, y:0 , e: document.getElementById('TAMA') };
var FEND = true;
var Pmouse = {x:240, y:600};

document.getElementById('waku').onmousemove = function (evt) {
 evt = evt ? evt: window.event;
 Pmouse.x = evt.clientX - offset.x;
 Pmouse.y = evt.clientY - offset.y;
}

document.getElementById('waku').onclick = function (evt) {
 start_tama();
 return evt ? evt.preventDefault(): event.returnValue = false;
};

start = function LOOP () {
 //ここに何か書く?

 FEND && setTimeout( LOOP, 10);
};

start_teki = function LOOP1 () {
 teki.x += teki.m;
 if (teki.x < 0 || teki.x > 460) teki.m *=-1, teki.y += 20;
 teki.e.style.top = teki.y + 'px';
 teki.e.style.left = teki.x + 'px';

 FEND = teki.y < 600;
 FEND && setTimeout(LOOP1, 20);
};

start_jiki = function LOOP2 () {
 jiki.x += (Pmouse.x < jiki.x -8 ) * -4 + (Pmouse.x > jiki.x +8) *4;
 jiki.e.style.left = jiki.x + 'px';
 jiki.e.style.top = jiki.y + 'px';
 FEND && setTimeout(LOOP2, 60);
};

start_tama = function () {
 var x = jiki.x;
 var y = jiki.y;
 var e = document.getElementById('TAMA').cloneNode(false);
 e.id = null;
 e.style.display = 'inline';
 document.getElementById('waku').appendChild(e);
 var P = function LOOP3 () {
  y-= 8;
  e.style.left = x + 'px';
  e.style.top = y + 'px';
  if (y>4) setTimeout(LOOP3, 20); else {
   document.getElementById('waku').removeChild(e);
  }
 };
 P();
};

function getPosition(node) {
var x = 0, y = x;
do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
return {x: x, y:y};
}

start();
start_teki();
start_jiki();

</script>

この回答への補足

具体的には…

var FEND = true;
var Pmouse = {x:240, y:600};

と、

document.getElementById('waku').onmousemove = function (evt) {
 evt = evt ? evt: window.event; //←この関数の中では特にここ
 Pmouse.x = evt.clientX - offset.x;
 Pmouse.y = evt.clientY - offset.y;
}

と、

 FEND = teki.y < 600;
 FEND && setTimeout(LOOP1, 20); //これはclearTimeoutはする必要はないのでしょうか?

と、

jiki.x += (Pmouse.x < jiki.x -8 ) * -4 + (Pmouse.x > jiki.x +8) *4; //(Pmouse.x < jiki.x -8 ) * -4も、(Pmouse.x > jiki.x +8) *4も、どういう演算なのでしょうか?()の中は、比較演算子なのに、それに-4や+4をかけるということがよく理解できません…。

と、

 FEND && setTimeout(LOOP2, 60); //FENDにどういう意味があるのかもわかりません。第二引数の数字が敵か自機かなどによって数字が違うのもどうしてでしょうか?

と、

cloneNode(false);

と、

appendChild(e);

と、

  if (y>4) setTimeout(LOOP3, 20); else {
   document.getElementById('waku').removeChild(e);
  } //自分でしらべたところ、appendChildとcloneNodeはわかったのですが(なんとなく…)、removeChildがどういうことがよくわかりませんでした。

function getPosition(node) {
var x = 0, y = x;
do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
return {x: x, y:y};
}

です…

こんなに沢山わかりません…。

もしご迷惑でなければご教授お願いできますでしょうか…?

補足日時:2009/05/30 20:58
    • good
    • 0

このままだと、けっしておぎょうぎがよくないじょ。


ちゃんとできたら、おもしろそうだね。がんばれ~!
yのあたいが、ちいさいままだったじょ。
たいまーも、いちどくりあーする・・・。
せっといんたーばるに、もじれつでかんすうしきをわたすのは、
ふるいというか、こてんというか、かいしゃくにじかんかかるじょ!
げーむは、すぴーどが、いのち?


<script language="JavaScript"><!--

var y = 450;
var interval = 20;
var timerId;

function moveBall(){
y = y - interval;

document.getElementById("ball").style.pixelLeft = getlyrleft("ber") + 24;
document.getElementById("ball").style.pixelTop = y;
document.getElementById("ball").style.visibility = "visible";
if( (y < 10) ){
document.getElementById("ball").style.visibility = "hidden";
document.getElementById("ball").style.pixelTop = getlyrtop("ber");
clearInterval(timerId);
return 0;
}
}

function getlyrtop(lyr){
return(parseInt(document.getElementById(lyr).style.pixelTop));
}

function getlyrleft(lyr){
return(parseInt(document.getElementById(lyr).style.pixelLeft));
}


// --></script>

</head>

<body onclick="y=450;timerId = setInterval(moveBall,1)">
<img src="bb01.gif" id="ball" style="position:absolute; visibility:hidden" left:0px;top:16px;">
<img src="bb03.gif" id="ber" style="position:absolute; left:445px; top:459px;"/>

この回答への補足

何度もありがとうございます!返事が遅くなってしまいすみません。
NO2の回答をずっと考えてました。まだまだ初心者なのでNO2の時点でちょっと難解です…;

補足日時:2009/05/30 20:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

Q添付画像のファイルはどんな状態のファイルなのでしょうか?クリってもエラ

添付画像のファイルはどんな状態のファイルなのでしょうか?クリってもエラーしか出た事がないのですが

Aベストアンサー

他の回答者様の記入通り、拡張子が無い事には判断出来ません。
また、クリックしてもエラーとありますが、webから探すとか出ませんか?
憶測ですが、多分質問者様のPCにこのファイルを開くアプリケーションが
インストールされていないのではないかな?って思います。
参考までに
よくありがちなのは、XPで作ったエクセルファイル等(逆だったかな^^;)を
ビスタのPCで見ると似たようなアイコンになります。
オフィスの互換パックをインストールすると見れます。

Qstyle.visibility="hidden";

下記は画面にJavaScriptで碁盤の目に区切り
左上の一区切りの下地を表示するコードです
<html>
<head>
<title>タイル</title>
<script language="JavaScript">
<!--
var block = [0];
function setTile() {
num = 100;
w = Math.floor(document.body.clientWidth / num);
h = Math.floor(document.body.clientHeight/ num);
wTag = "";
n = 1;
for (j=0; j<=h; j++) {
for (i=0; i<=w; i++) {
wTag += "<span id='abc" + n +"' style='position:absolute;top:" + j*num + "px;left:" + i*num + "px;width:" + (num-1) + "px;height:" + (num-1) + "px;background-color:blue;'>" + "</span>";
block[n] ='abc' + n;
n++;
}
}
document.all["tile"].innerHTML = wTag;
document.body.style.visibility = "visible";
abc1.style.visibility="hidden";
}
// -->
</script>
</head>
<body onLoad="setTile()" style="visibility:hidden">
<div id="tile" style="position:absolute;top:0px;left:0px;"></div>
</body>
</html>
下地を表示する
abc1.style.visibility="hidden";
を下記に直すと動かなくなります
block[1].style.visibility="hidden";
よろしくお願いします。

下記は画面にJavaScriptで碁盤の目に区切り
左上の一区切りの下地を表示するコードです
<html>
<head>
<title>タイル</title>
<script language="JavaScript">
<!--
var block = [0];
function setTile() {
num = 100;
w = Math.floor(document.body.clientWidth / num);
h = Math.floor(document.body.clientHeight/ num);
wTag = "";
n = 1;
for (j=0; j<=h; j++) {
for (i=0; i<=w; i++) {
wTag += "<span id='abc" + n +"' style='position:absolute;top:" ...続きを読む

Aベストアンサー

#2です。やりたい事がちょっと分からないんですが、
↓こんな感じでしょうか?(順番にhidden化していく)

<html>
<head>
<title>タイル</title>
<script language="JavaScript">
<!--
var block = new Array();
var n = 0;
var a = 1;
function setTile() {
num = 100;
w = Math.floor(document.body.clientWidth / num);
h = Math.floor(document.body.clientHeight/ num);
wTag = "";
n = 1;
for (j=0; j<=h; j++) {
for (i=0; i<=w; i++) {
wTag += "<span id='abc" + n +"' style='position:absolute;top:" + j*num + "px;left:" + i*num + "px;width:" + (num-1) + "px;height:" + (num-1) + "px;background-color:blue;'>" + "</span>";
block[n] ='abc' + n;
n++;
}
}
document.all["tile"].innerHTML = wTag;
document.body.style.visibility = "visible";
setBlock();
}
function setBlock() {
if (a <= 20) {
eval(block[a] + ".style.visibility='hidden'");
a++;
setTimeout("setBlock()", 1000);
}
}
// -->
</script>
</head>
<body onLoad="setTile();" style="visibility:hidden">
<div id="tile" style="position:absolute;top:0px;left:0px;"></div>
</body>
</html>

#2です。やりたい事がちょっと分からないんですが、
↓こんな感じでしょうか?(順番にhidden化していく)

<html>
<head>
<title>タイル</title>
<script language="JavaScript">
<!--
var block = new Array();
var n = 0;
var a = 1;
function setTile() {
num = 100;
w = Math.floor(document.body.clientWidth / num);
h = Math.floor(document.body.clientHeight/ num);
wTag = "";
n = 1;
for (j=0; j<=h; j++) {
for (i=0; i<=w; i++) {
wTag += "<span id='abc" + n ...続きを読む

Q右クリで画像保存が出ない!

画像を取りたくて矢印を画像に置くと!手のマークに代わり!右クリができなくなりました。
どうしたらよいのでしょうか?

Aベストアンサー

最近のサイトでは著作権の問題もあり、勝手に保存ができないように右クリックができないように設定しいるところが多くなっているであります。法律に抵触する場合もあるであります。

方法としては、色々あるでありますが、ただ見えてる画像が欲しいのであれば、プリントスクリーンでPC画面全体をコピーして、ペイントソフトにペースト、余分な部分を削除して保存すればいいと思うであります。

プリントスクリーンはググってほしいであります。

Qdocument.getElementById( ).style.displayについて

「document.getElementById( ).style.display」を使って
スタイルシートを書き換え、画像とテキストの表示替えをしています。
Firefoxでは正常に動作するのですが、
IEでは「displayプロパティ」を取得できずに動作しません。
htmlは以下のとおりです。
どなたかお分かりになる方、教えていただけないでしょうか?
よろしくお願いします。

★javascriptの内容
function toggle(Aid,Bid,Cid,Did,Eid) {
document.getElementById(Aid).style.display = 'none';
document.getElementById(Bid).style.display = 'inherit';
document.getElementById(Cid).style.display = 'inherit';
document.getElementById(Did).style.display = 'none';
document.getElementById(Eid).style.display = 'none';
}
★スタイルシートの内容
#page {width: 910px;}
#ai{height: 33px;display:inherit;}
#kaki{height: 33px;display:none;}
#img_ai{margin: 0px;float: left;display:none;}
#img_kaki{margin: 0px;float: left;display:inherit;}

「document.getElementById( ).style.display」を使って
スタイルシートを書き換え、画像とテキストの表示替えをしています。
Firefoxでは正常に動作するのですが、
IEでは「displayプロパティ」を取得できずに動作しません。
htmlは以下のとおりです。
どなたかお分かりになる方、教えていただけないでしょうか?
よろしくお願いします。

★javascriptの内容
function toggle(Aid,Bid,Cid,Did,Eid) {
document.getElementById(Aid).style.display = 'none';
document.getElementById(Bid).style.displ...続きを読む

Aベストアンサー

いろいろ調べてみましたが、結論として
「inherit」をIE系(IE5.x、IE6)がサポートしていないのが原因の様です。

「displayプロパティの値を取得できませんでした。引数が不正です。」
のメッセージは、~~.style.displayのプロパティが参照できない事が原因ではなく、右辺値'inherit'が
受け付けられない事によって起こっています。

function toggle(Aid,Bid,Cid,Did,Eid) {
  document.getElementById(Aid).style.display = 'none';
  document.getElementById(Bid).style.display = 'inherit';  ※
  document.getElementById(Cid).style.display = 'inherit';
  document.getElementById(Did).style.display = 'none';
  document.getElementById(Eid).style.display = 'none';
}

現在は、※の箇所でエラーが発生します。
試みに、一行目の'none'を'xxxx'に変えると、そこでエラーが発生します。
これは、代入値が受付可能なものでないとエラーとなる事を示しています。

ちなみに以下のMSDNのライブラリでも、displayプロパティに対する設定値として'inherit'は
出てきません。
(http://msdn.microsoft.com/library/default.asp?url=/workshop/author/css/reference/css_ref_attributes_entry.asp)

一方で、FirefoxのCSS対応表
(http://f57.aaa.livedoor.jp/~motohiko/CSS/css2.1.html)
「'run-in', 'inline-block', 'inline-table' には非対応。」とありますが、'inherit'は対応している
ようです。

代替手段はありそうですが、質問者の方が'inherit'をどのような意図で使っているかわかりかねるので
その点はお答えかねます。

いろいろ調べてみましたが、結論として
「inherit」をIE系(IE5.x、IE6)がサポートしていないのが原因の様です。

「displayプロパティの値を取得できませんでした。引数が不正です。」
のメッセージは、~~.style.displayのプロパティが参照できない事が原因ではなく、右辺値'inherit'が
受け付けられない事によって起こっています。

function toggle(Aid,Bid,Cid,Did,Eid) {
  document.getElementById(Aid).style.display = 'none';
  document.getElementById(Bid).style.display = 'inherit'...続きを読む

Q 友近さんの画像を探しています。本当にいい人で、美人で、セクシーだと思

 友近さんの画像を探しています。本当にいい人で、美人で、セクシーだと思います。着衣・水着・スカート、なんでもOKです(あまり小さいサイズじゃない方がよいです)。どうぞよろしくお願いします。

Aベストアンサー

こちらに数点ありました。
http://bsearch.goo.ne.jp/image.php?UI=web&TAB=web&STYPE=0&CC=1&SCRDEF=0&IMGST=0&IMGSZ=0&IMGC=3&IMGFT=0&IMGFT=1&IMGFT=2&IMGFT=3&MOVPT=0&MOVFT=0&MOVFT=1&MOVFT=2&MOVFT=3&AUDPT=0&NSDP=1&KWDP=1&DC=20&FR=1&SM=mc&OCR=1&SITE=&SITE2=&SITE3=&SITE4=&SITE5=&SITEH=&AUDST=0&AUDMST=0&MOVTHN=0&QGR=1&MOVSC=0&NOJSB=0&QGA=1&NOJS=0&AUDSITE=0&MT=%CD%A7%B6%E1&button=%B2%E8%C1%FC%B8%A1%BA%F7
画像を使用される場合は自己責任でお願いします。

Q&= ~0x0c; &= ~0x03; |=1;

JavaScriptで分からないコードがあるので教えてください。


■変数設定
var hoge = 0;


■変数格納
・キーを押した時の条件分岐
  ~なら hoge |= 1;
  または hoge |= 2;
  または hoge |= 3;
  または hoge |= 8;

・キーを離した時の条件分岐
  ~なら hoge &= ~0x0c;
  または hoge &= ~0x03;


■変数使用
・swithch文の条件分岐に利用
  (hoge&0x03)
  (hoge&0x0c)


■質問
・どういう意味でしょうか?
・文字コード?
・ビット演算?

Aベストアンサー

ビット演算してるわね

x = x + a

x += a
って書くことができるの

つまり
hoge |= 1

hoge = hoge | 1
のことね

~はNOTのこと

0x
はアスキーコードの16進数表記ねきっと

0x0c は改ページを意味していて
0x03 は文章の最後を意味している
と思われるわ
全文がないので推測だけど

Q●「美人アプリ」の画像を保存したい!

●「美人アプリ」というアプリを使用しています。

●ここで表示される画像を保存したいのですが、方法がわかりません。可能かどうかも。。

●もし、方法をご存知の方がいらっしゃいましたら教えていただけませんか?おねがいします。

Aベストアンサー

保存したい画像を表示させて、↓の方法で画面をキャプチャすると、写真アルバムから見れます。
http://blog.livedoor.jp/sakusakupocky/archives/50263981.html

Qif(document.all && navigator.appVersion.indexOf('Mac')!=-1)returnの意味

よろしくお願いします。
JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。

//MacIE4,5バグ 回避
if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return

//以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。
navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ、で、falseが返されるのでしょうか?
しかし、そもそもnavigatorオブジェクトはブラウザの種類のことではないのか?と混乱してしまっています。
また、document.allがどのような役割を果たしているのかも分かりません。なぜここでdocument.allが出てくるのでしょうか?

どなたか分かる方いらっしゃいましたら、ご教授宜しくお願いします。

よろしくお願いします。
JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。

//MacIE4,5バグ 回避
if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return

//以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。
navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ...続きを読む

Aベストアンサー

「document.all」は昔はIEにだけ存在するオブジェクトだったのでIEであるかどうかの判定に使われました。

今ではOperaやNetscape等でもIEへの互換の為に存在するのでIEかどうかの判定に使われる事は減ってきています。
IEであるかどうかの判定ではなく、純粋にdocument.allが在る(使える)かという判定にはもちろん使用されますが。

「navigator.appVersion」は確かにブラウザの種類なんですが、実際にはOS名も含まれていたりすのでOSの判定にも使われたりします。

また、 != -1 というのは indexOf関数の結果が 0~なら文字列が見つかったという意味(真偽ではなく、見つかった位置を返す関数)になるのでこういう比較式を使用しています。
(1でなかったらMacユーザという解釈はちょっと違います。)

参考URL:http://www.openspc2.org/JavaScript/ref/

Q右クリ禁止のサイトの画像を保存

質問の通りなのですが右クリック禁止のサイトの画像を保存できるようにする方法はないでしょうか?あと、よく海外でおもしろ動画とかを見せてるサイトがありますが、そういった動画を保存する方法はありますか?重ねて質問すいません^^;

Aベストアンサー

そのサイトを見ないとなんとも言えませんが、
JAVAをオフにしてみると右クリック禁止がはずれる事もあります。

それで駄目ならば、プリントスクリーンを取って画像を修正してください。
まぁ画像を持ち出されたくないサイトならばあまり持ち出さないほうがよろしいかと思います。

ちなみに動画を保存する場合は専用のソフトなどが必要。

Qdocument.getElementById

document.getElementByIdでURLを変数に代入したいのですが
うまくリンクになりません。

どこが間違っているのでしょうか?
どうしたらよいのでしょうか?

ソースはこちらです



<!DOCTYPE html>
<html lang="ja">
<head>
<script language="JavaScript" type="text/javascript">
var url = 'http://www.goo.ne.jp/';
var urlgoo = document.getElementById("urlgoo").src = url;
</script>
</head>
<body>
<a id="urlgoo" title="sample">Link</a>
</body>
</html>

Aベストアンサー

注意したい点が2つあります。

1. <a>タグのリンク先はsrc属性ではなくhref属性で指定します。

2. ブラウザは、スクリプトやタグを「読み込み順に解析しながら」表示・実行していきます。
ブラウザが「var urlgoo = document.getElementById~」を実行する段階ではまだ「<a id="urlgoo" ~」の存在を知らないため、
document.getElementById("urlgoo")はnullが返ってきます。
ですから、スクリプトの位置をソースの最後の方に移動するか、window.onloadイベントを活用する事で
「<a id="urlgoo" ~」の解析が終わった後にスクリプトが実行されるようにする必要があります。


人気Q&Aランキング