人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: keisukeiyama
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge クリック リンク
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ぱこち
●60ポイント ベストアンサー
<a href="javascript:void(0)" onclick="hoge(); this.removeAttribute('href'); this.blur(); this.onclick=null;">リンク</a>

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

◎質問者からの返答

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


2 ● lizy
●10ポイント

まず前者の方ですが、関数呼び出しを"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>
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ