まず、自分が書いたコードのそれぞれのメソッドの仕様を確認して原因を切り分けましょう。
わかりやすい日本語の解説
jQuery リファレンス:attr http://www.jquerystudy.info/reference/attributes/attr.html
miyabi-sunの回答と主の質問内容から、
.href('href')実行時点でundefinedが返ってきているのでは無いかという想像が妥当です。
(実際の原因かどうかは主が対象の環境と実行するコードでデバッグして確かめてください)
さて、「コードを実行するページの全てのaタグが、href属性を持っているという前提でコードを書いたが、実はそうでない場合がある」という原因が考えられる場合以下の対応方法が考えられます。
- 実行対象のページのaタグにhrefの記述忘れがあれば全て修正する
- 「hrefを持っていないaタグ」が存在する以上、その場合の仕様を決める
前者が100%保証できない(と考えるのが既に妥当なように見えます)のであれば、
後者をどうするか決定する必要があります(hrefの入ってないタグは処理せず無視できるようにするなどのことです)
今回の場合は、主は「全体」と言っているので全てを受け入れる(と解釈します)方法を考える必要があり、
href属性が付いてないものが存在するとなると
という条件分岐は最低限必要であることがわかります。
今回は(おそらく)href属性がない場合に、undefinedが返ってくるということがわかっていますので
$(this).attr('href') !== undefinedかどうか条件分岐する必要があるでしょう。
そして、hrefを持っていない場合に対しては置き換える必要が無いので、
.attr()メソッドの値を設定する記法で直接設定してしまえば良いと思います。
(サンプルコードを書きにくい環境から書き込みしているのでサンプルコードを上げることは今回はできません。。)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/12 22:58
2015/11/12 23:39 編集
2015/11/13 17:15