リンクをクリックすると処理を実行して、リンクを無効にしたいのですが、

(1回クリックすると無効になる)

<a href="hoge(); javascript:this.removeAttribute('href');">リンク</a>
だと、リンクが無効になりません。

<a href="javascript:void(0)" onclick="hoge(); javascript:this.removeAttribute('href');">リンク</a>
だと、リンクが消えたように見えるのですが実際にクリックするとhogeが実行されてしまします。

どうしたらいいでしょうか?

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/08/26 22:29:39
  • 終了:2010/08/26 23:27:08

ベストアンサー

id:pacochi No.1

ぱこち回答回数244ベストアンサー獲得回数1112010/08/26 23:18:14

ポイント60pt
<a href="javascript:void(0)" onclick="hoge(); this.removeAttribute('href'); this.blur(); this.onclick=null;">リンク</a>

onclick イベントも無効化してしまえば実行されなくなると思います。ついでにフォーカスも外しました。

id:keisukeiyama

意図した通りに動くようになりました!回答ありがとうございました!

2010/08/26 23:26:26

その他の回答(1件)

id:pacochi No.1

ぱこち回答回数244ベストアンサー獲得回数1112010/08/26 23:18:14ここでベストアンサー

ポイント60pt
<a href="javascript:void(0)" onclick="hoge(); this.removeAttribute('href'); this.blur(); this.onclick=null;">リンク</a>

onclick イベントも無効化してしまえば実行されなくなると思います。ついでにフォーカスも外しました。

id:keisukeiyama

意図した通りに動くようになりました!回答ありがとうございました!

2010/08/26 23:26:26
id:lizy No.2

lizy回答回数45ベストアンサー獲得回数142010/08/26 23:25:51

ポイント10pt

まず前者の方ですが、関数呼び出しを"javascript:"の後ろに持ってこないと動作自体がうまくいかないようです。

<a href="javascript:hoge();this.removeAttribute('href');">リンク</a>

ただしこれでも期待する動作にはなりませんでした。調べてみたところ、href内におけるthisの値ですが<a>タグではありませんでした(恐らくwindow)。とりあえずidを割り振る方法での動作を確認しました。他にも方法はあるかもしれません。

<a id="ahoge" href="javascript:hoge(); document.getElementById('ahoge').removeAttribute('href');">リンク</a>

次に後者の方法ですが、こちらの場合はhrefだけでなくonclickもつぶせばよいです。onclick内におけるthisは<a>タグのようで、こちらはidを使わなくてもそのままいけました。

<a href="javascript:void(0)" onclick="hoge(); javascript:this.removeAttribute('href'); this.removeAttribute('onclick')">リンク</a>

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません