-
ID:RwMqbU さんの質問

下記のスクリプトが動きません。
どこを直せばいいんでしょうか?
document.getElementById("Check").innerHTMLをdocument.writeにすると表示されるんですが、どこが間違っているのかわかりません。
<div>
<script>
var CookieCheck = navigator.cookieEnabled;
if(CookieCheck) {
 document.getElementById("Check").innerHTML = "OK";
} else {
 document.getElementById("Check").innerHTML = "NG";
}
</script>
<p id="Check">チェック結果</p>
</div>

みんなの回答 4 件

ID:uk4CuX さんの回答

このままだとpタグが描画される前に<script>が実行されるからエラーになるんじゃないかと

ID:RwMqbU

とんちんかんなことを言ってたら申し訳ないのですが、上に書かれたものから順に実行される、という認識でよいですか?
という前提で、スクリプトの前に<p>を書いてみたり<p>にonClickを追加してみたりしたのですが、ダメでした…。

ID:uBa0mx さんの回答

前の回答のとおり要素の後ろに書くか、要素の前に書きたかったらonloadで呼び出す

innerHTMLが動作しない。 【OKWave】

http://okwave.jp/qa/q2594727.html
ID:RwMqbU

var CookieCheck = navigator.cookieEnabled;
window.onload = function() {
 if(CookieCheck) {
  document.getElementById("Check").innerHTML = "OK";
 } else {
  document.getElementById("Check").innerHTML = "NG";
 }
};
この書き方であっていますか…?

ID:uBa0mx

var CookieCheck = navigator.cookieEnabled;は他のところに使わなければ、function内でいいんじゃないですかね

ID:RwMqbU

window.onload = function () {
 var CookieCheck = navigator.cookieEnabled;
 if(CookieCheck) {
  document.getElementById("Check").innerHTML = "OK";
 } else {
  document.getElementById("Check").innerHTML = "NG";
 }
};
---
<input type="button" onClick="CookieCheck()" value="Check!!">
<p id="Check">チェック結果</p>
で実行したところ、下記のようなエラーが…。
CookieCheck is not defined

function CookieCheck()にして、元のCookieCheckの名前を変えても変わらずで…沼にハマりまくっています…。

ID:uBa0mx

ボタン削除すれば動きますよ
ボタン押したときに実行する関数ないし・・・
://jsdo.it/Ituki/p11v

ID:RwMqbU

検証してくださったんですね。ありがとうございます。
ロードされたときに出すのもいいんですが、できればボタンクリックで判定したいなと思って、onLoadをonClickにしてみました。
それで色々試してみたんですが、MacのSafari・ChromeとWindowsのIE・Chromeは表示され、MacのFirefoxだけでエラーが出ます。
(Windowsの方にFirefoxインストールしておらず…)
ドツボに……

ID:uBa0mx

window.onload = function () {

function isCookieCheck() { //関数名は変数と別にする

<input type="button" onClick="CookieCheck()" value="Check!!">

<input type="button" onClick=" isCookieCheck()" value="Check!!">
だと動きますよ。
://jsdo.it/Ituki/p11v

ID:RwMqbU

コメ主様
お返事が大変遅くなりました。
上記のスクリプトを試したものの、エラーは出ないのに全く反応せず…。
あれやこれやと試して、やっと実行することができました。
書いていただいたスクリプトは全く問題なく、一カ所innerHTMLをinnerTextにしていたせいで反応しなかったようです。
(そんなバカなと思いましたが…)
関数名を変数名を変更することで正常に動くということも大変勉強になりました。本当にありがとうございます。
また質問させていただくこともあるかもしれませんが、どうぞよろしくお願いします。

ID:r2hc1r さんの回答

使ってるブラウザは?chromeでもfirefoxでもIEでもJSのエラーは開発ツールで確認できるから、それを利用すると良いですよ。

ID:RwMqbU

Firefox使ってます。
一応Firebugというのは入れているんですが、エラーは出てこないんです…

ID:RwMqbU さんの回答

window.onClick = function () {
 var CookieCheck = navigator.cookieEnabled;
 if(CookieCheck) {
  document.getElementById("Check").innerHTML = "OK";
 } else {
  document.getElementById("Check").innerHTML = "NG";
 }
};
---
<input type="button" onClick="CookieCheck()" value="Check!!">
<p id="Check">チェック結果</p>

上記をSafariで試したら、できました。
Firefoxではエラーが出ました。ローカルファイルのため、Chromeでは実行していません。
なぜSafariでできたのか、なぜFirefoxでエラーになるのか、さっぱりわかりません…。

最終更新日:2015-01-16 (2,541 views)

関連するトピックス

ページ上部に戻る