• ベストアンサー

IDの持たせ方 (Re: IDのHTML文字列を…)

すみません、締め切った質問ですが、ご回答くださった steel_grayさんが予測されていた通り(下記)、 > ページ内の全リンクに「<br>↑のファイルがある…」が足されます。 > 一部のリンクだけに足すようにするにはなにか条件が必要です。 > (あるIDを持つDIV配下のリンクだけにするとか、 > あるclassを持つアンカーだけにする等。) '一部のリンクだけに' リンクを足すようにしたいの ですが、、、。自分なりに考えてみたのは、 (1) <head>内のスクリプトで下記の部分を改訂 var AnchorList = document.getElementsByTagName('A'); ↓ var AnchorList = document.getElementById('folder'); # getElementByIdでいいのですよね?getElement【s】ByIdでなく (2) <body>内の「<br>↑のファイルがある…」を挿入したい部分に<div>タグ+IDを追加 <div id="folder"> <a href="file:///C:\temp\hoge1.txt">file:///C:\temp\hoge1.txt</a> </div> でも、動作せず、スクリプトエラーにもならず、です。 何が誤っていますでしょうか。 すみません、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

試してないけど、 <dd><a href="${uri}"id="folder">${uri}</a> (${size} bytes)<br><br> の部分を <dd><a href="${uri}" class="folder">${uri}</a> (${size} bytes)<br><br> にして #1の if(AnchorList[i].parentNode.parentNode.getAttribute('id')=="folder"){ の部分を if(AnchorList[i].className=="folder"){ にすればいいような気がします。

litton101
質問者

お礼

できました、できました! どうもありがとうございました。 大変助かりました。

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

惜しかった。 var AnchorList = document.getElementsByTagName('A'); ↓ var AnchorList = document.getElementById('folder').getElementsByTagName('A'); これで folder 以下のAnchorのリストが作成できます。

litton101
質問者

補足

BLUEPIXYさん、steel_grayさん、ご教示ありがとうございます。 結論からいうと、お二人に手直しいただいたもの、両方を動作確認しました。 大変助かったのですが、私の説明不足で予想外の問題が出てしまいました。 今回の「HTML文字列を取得→加工→書き出したい」という質問、 要は全文検索システムNamazuで、検索すると次の例のような 検索結果リストが出ますが、 http://www.namazu.org/cgi-bin/namazu.cgi?query=namazu&whence=0&lang=ja&idxname=www.namazu.org.ja 私はこれを対・WebページでなくローカルHDD内の文書検索に利用して いるため、検索にHITしたファイルへの直リンに加え、ファイルの所在 するフォルダを開くリンクを併設したかったんです。 NamazuのHTMLテンプレートで関係ありそうな部分は下記のようになっており、 これがループして上記URL例のようにリストアップされるのだと推察しますが、 <dt>${namazu::counter}. <strong><a href="${uri}">${title}</a></strong> (スコア: ${namazu::score}) <dd><strong>著者</strong>: <strong>${author}</strong> <dd><strong>日付</strong>: <strong>${date}</strong> <dd>${summary} <dd><a href="${uri}"id="folder">${uri}</a> (${size} bytes)<br><br> わたしは↑の5行目の<a href ...>に、<div id="folder"><a href ...></div> としたところ、検索でHITしたファイルの1件目にしか 「<br>↑のファイルがある…」が付与されないのですね。 (1行目のリンクに、「<br>↑のファイルがある…」は必要ありませんよね?) 最初steel_grayさんに作っていただいたページ内の全リンクに文字列を追加する スクリプトだと、全部に「<br>↑のファイルがある…」が追加されたのですが。。。 最初の最初に、steel_grayさんに 「CGI本体は基本的に変更できないけど、(HTMLの)この部分なら  変更できるって制約などがあるなら、あらかじめ提示してもらわないと」 とご指摘いただきましたが、横着して説明を省くべきでなかったと反省しています。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

for(i=0;i<AnchorList.length;i++) { var Href = AnchorList[i].getAttribute('href'); Href.match(/\/|\\/g); Href = RegExp.leftContext + RegExp.lastMatch; AddObjList.push([AnchorList[i].parentNode,Href]); } の部分を for(i=0;i<AnchorList.length;i++) { if(AnchorList[i].parentNode.parentNode.getAttribute('id')=="folder"){ var Href = AnchorList[i].getAttribute('href'); Href.match(/\/|\\/g); Href = RegExp.leftContext + RegExp.lastMatch; AddObjList.push([AnchorList[i].parentNode,Href]); } } に変更すればいいですよ。 質問文の様にリンクを<p></p>で囲まないなら parentNodeを1個消して下さい。

関連するQ&A

専門家に質問してみよう