アプリ版:「スタンプのみでお礼する」機能のリリースについて

HTMLでボタンを設置して、ボタンが押されたらHTMLの内容を書き換えたいのですが。
HTMLでできるのでしょうか?

いくつかのリンクがあり、それぞれ横にチェックボックスが付いています。
チェックボックスがONの場合そのリンク表示を削除したいのです。

A 回答 (5件)

HTMLのみでは無理ですので、


JavaScriptの属性値生成と連想配列の組み合わせで作ってみました。
連想配列はまだ勉強不足なのであれですが。

<script type="text/javascript">
<!--
var aHrefList = new Array();
function OnOffHref(o){
//INPUTの親ノードであるPが子要素に持つAの0番目
var a = o.parentNode.getElementsByTagName("A")[0]; if(!a){return false;}
if( o.type =="checkbox"){
if( o.checked ){
//href値を配列に保存しておく
aHrefList[o.id] = a.href;
//hrefを削除
a.removeAttribute('href');
}else{
//hrefを戻す(セットする)
a.setAttribute('href',aHrefList[o.id]);
}
}
}
//-->
</script>
</head>
<body>
<form name="form1" id="form1" action="#">
<p><a href="#1">link1</a><input type="checkbox" value="link1" name="c1" id="c1" onclick="OnOffHref(this);"></p>
<p><a href="#2">link2</a><input type="checkbox" value="link2" name="c2" id="c2" onclick="OnOffHref(this);"></p>
<p><a href="#3">link3</a><input type="checkbox" value="link3" name="c3" id="c3" onclick="OnOffHref(this);"></p>
</form>

</body>
</html>


またはこうでも動きました。

<script type="text/javascript">
<!--
var aHrefList = new Array();
function OnOffHref(o,id){
//AのIDを引数として受け取ってオブジェクトを得る
var a = document.getElementById(id); if(!a){return false;}
if( o.type =="checkbox"){
if( o.checked ){
//href値を配列に保存しておく
aHrefList[a.id] = a.href;
//hrefを削除
a.removeAttribute('href');
}else{
//href値を戻す
a.setAttribute('href',aHrefList[a.id]);
}
}
}
//-->
</script>
</head>
<body>
<form name="form1" id="form1" action="#">
<p><a href="#1" id="hoge1">link1</a><input type="checkbox" value="link1" name="c1" onclick="OnOffHref(this,'hoge1');"></p>
<p><a href="#2" id="hoge2">link2</a><input type="checkbox" value="link2" name="c1" onclick="OnOffHref(this,'hoge2');"></p>
<p><a href="#3" id="hoge3">link3</a><input type="checkbox" value="link3" name="c1" onclick="OnOffHref(this,'hoge3');"></p>
</form>

</body>
</html>
    • good
    • 0
この回答へのお礼

ありがとうございます!
参考にさせていただきます。
動作的にはこのような感じで全くOKなのですが、

javascriptを使うと上にセキュリティ保護の黄色いバーがおりてくるのが、
いちいちこれをクリックしないといけないところが、困ります。
セキュリティなどの変更をせずに無駄な動きなしで動作するものというのはないでしょうか・・・

お礼日時:2010/05/29 10:52

> javascriptを使うと上にセキュリティ保護の黄色いバーがおりてくるのが、いちいちこれをクリックしないといけないところが、困ります。


情報バーの警告かな?

---------
セキュリティ保護のため、コンピューターにアクセスできるアクティブ コンテンツは表示されないように Web ブラウザーで制限されています。
オプションを表示するには、ここをクリックしてください。
---------

Internet Explorer の情報バー :よく寄せられる質問
http://windows.microsoft.com/ja-JP/windows-vista …
Windows XP SP2 の Internet Explorer の情報バーについて
http://support.microsoft.com/kb/843017/ja

> セキュリティなどの変更をせずに無駄な動きなしで動作するものというのはないでしょうか
JavaScriptをローカルで利用しようとする問答無用で警告してきます。
ApacheなどのWebサーバをインストールして、127.0.0.1 で閲覧するか、IE以外のブラウザを使ってみてください。
    • good
    • 0

#2です。


>javascriptを使うと上にセキュリティ保護の黄色いバーがおりてくるのが、

テキストエディタからIEでプレビューしているとかでしょうか?
そういうの聞いたことがあるような。。
こちらはブラウザでのみ確認しましたが出てきません。
それかセキュリティレベルの設定のせい?
ごめんなさい、わからないです^^;
    • good
    • 0
この回答へのお礼

おそらくIEでセキュリティレベルの問題で出てくるようです。
もう少し調べてみます、ありがとうございます!

お礼日時:2010/05/29 15:18

javascriptをつかわないのであれば、サーバーサイドのプログラムに毎回データを


おくってページを読み直すことです。
サーバーサイドのプログラムがわからないのであればそっくりなページをつくっておいて
そのページに飛ぶといいでしょう
    • good
    • 0
この回答へのお礼

ありがとうございます!

ただ。サーバーにはアップせずにHTMLファイルは常にローカルにあります。
自分でお気に入りサイトのリンク集を作ろうとしています。
登録はC#プログラムで小さいフォームにドラッグアンドドロップでできるのですが、
削除するのはHTML側でできるようにしたいと思っているのです。

お礼日時:2010/05/29 15:15

HTML単体では無理。


DOMなりなんなりで、要素の書き換えを行います。

書き換えだけであれば、GetElementByIdメソッド等でIDからオブジェクトを指定し、そのあとはStyleで非表示にするなり、innerHTMLで書き換えを行うなりすることになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはりHTMLでは無理ですか、他の方法を探してみます。
ありがとうございました!

お礼日時:2010/05/29 15:23

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