助太刀忍者(質問掲示板)

助太刀忍者

No.52210    JavaScriptについて
JavaScriptにて、stylesheetのdisplayを変更しています。

具体的には、idを引数にとり、シートの中からそのidを探して、
display:block;
または
display:none;
を追加書き込みしています。

ローカル上では正常に作動するのですが、アップロードをすると、
display:none;
だけ追加されない状態になってしまいます。
(display:block;は正常に作動します)

また、デバッグのためにalert()を試してみているのですが、こちらもアップロードすると反応しない様子。

忍者ツールズ側で、JavaScriptに規制をかけていらっしゃるのでしょうか?
また、かけている場合はどのようなコードが引っかかるのでしょうか?
試した操作手順
ローカルで作成→動作確認→アップロード→不具合発覚→
alert();を挿入してローカルで動作確認→
アップロード→alert();も反応せず
投稿者:No Name Ninja 投稿時間:2012-04-23 18:17:52
投稿者 : No Name Ninja
投稿時間:2012-04-23 19:47:44
http://www.ninja.co.jp/hp/help/faq/1099/
クライアントのブラウザーで実行されるものに関しては規制はありません。

尚、忍者の仕様が関係ない場合、具体的なサイト作成についての質問に忍者側が回答する(サポートする)ことはありません(利用規約に記載があります)。

ここに回答がつくとすれば、一般ユーザーからの回答になります。該当ページのURLを提示ください。もしくは、具体的なコードを提示ください。

※displayの方は具体的なコードが無かったので試せませんでしたが、alert()の方は試してみたところ正常に動作しましたよ(head内に記述の場合、タグに直接記述した場合、どちらもOK)。
質問者からのコメント 2012-04-25 22:31:41
返信ありがとうございます。

もちろん忍者側でなく、一般のユーザさんに質問させていただいております。


コーディングが下手なのでお恥ずかしいですが、JavaScriptのファイルのコードは以下の通りです。リンククリック時にchangeContent(id)を呼び出しています。

var disp = "none";

function changeContent(id) {
if(disp != id) {
display(id);
elase(disp);
alert(disp);
disp = id;
}
}

function display(id) {
id = "#" + id;
var decralation = "display:block;";
changeRule(id, decralation);
}

function elase(id) {
id = "#" + id;
var decralation = "display:none;";
changeRule(id, decralation);
}

function changeRule(id, decralation) {
var styles = document.styleSheets;

for(var index=0; index<styles.length; index++) {
var style = styles[index];
var rules = style.cssRules || style.rules;
for(var j=0; j<rules.length; j++) {
var rule = rules[j];
var selector = rule.selectorText;
if(selector.indexOf(id) != -1) {
// alert("ok");
rule.style.cssText = decralation;
}
else {
//alert(selector.indexOf(id));
}
}
}
}



また、内容が書き加えられるスタイルシートのコードは以下の通りです。関係する部分以外は省略してあります。
#about {
display:none;
}
#construction {
display:none;
}


.cssファイルと.jsファイルはHTMLファイルのhead内で参照しています。
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
・・・

よろしくお願いします。