質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

2589閲覧

JavaScriptで、HTML内の特定のaタグを削除したい。

m.ok.2nd

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/08/17 01:38

編集2022/08/17 12:52

お世話になっております。

JavaScriptで、HTML内の特定のaタグを削除したいです。

HTMLの中に以下のようなaタグが複数含まれています。このaタグ部分のみを削除したいです。


<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%FE%C5%D4%C9%DC%CE%A9%BF%A2%CA%AA%B1%E0">京都府立植物園</a>

↓↓↓

(削除後)
京都府立植物園

対象条件:
「href="http://d.hatena.ne.jp/keyword」または
「href="https://d.hatena.ne.jp/keyword」が含まれているaタグ

【追記】
実際にはJavaScriptではなく、WindowsのJScriptで行います。
HTMLが含まれるテキストファイルを読み込んで処理します。

str.replace()で正規表現などを使って、処理をしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/08/17 02:13

コードを提示されるのでしたらマークダウンのcode機能を利用してください。 見ての通り、URLが自動でリンクになります。 あと、自身で調べたこと試したことも記載してください。
m.ok.2nd

2022/08/17 02:21

すみません。マークダウンのcode機能分かります。 勉強しますが、今すぐに対応できません。
m.ts10806

2022/08/17 02:25 編集

誰も急かしてないので、急がなくて良いかと。 以下確認してやってみてください。 https://teratail.com/questions/238564 ただ、現状だと質問ではなく作業依頼なので、そちらのほうが問題です。 環境情報詳細も必要でしょう。 質問タグやタイトル、内容からJScriptであることは誰にも伝わりませんし。
m.ok.2nd

2022/08/17 02:30

すみません。 JScriptでは、通常(?)のJavaSCriptで出来ることは、ほぼそのまま出来ます。 対象をJScriptにしてしまうち回答があまり付かないかと思い、こうしてしまいました。 申し訳ありません。 > 質問ではなく作業依頼 正規表現に詳しくないので、正規表現の方法を質問したつもりですが、質問の仕方が悪かったかもしれません。
m.ts10806

2022/08/17 02:51

>回答があまり付かないかと思い だからこそ「多く見られるのは間違いないけど全く同じではないもの」である JavaScriptとしてしまうのはやりとりが必要となり、余計に時間がかかるわけです。 今後の参考にしてください。
guest

回答3

0

ベストアンサー

javascript

1str.replace(new RegExp('<a[^>]+href=\"https?://d\.hatena\.ne\.jp/keyword.*?>(.*?)</a>', 'g'), '$1')

投稿2022/08/17 02:34

t-n

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ok.2nd

2022/08/17 02:42

t-nさん、ありがとうございます。 今、試した限りではうまく行っています。 もう少し試して、ベストアンサーにしたいと思います。
guest

0

方法は色々ありますが、
例えばquerySelectorAllでCSSセレクター上でURLを指定し、
CSSを使ってリンクを無効化するとか.

javascript

1Array.from(document.querySelectorAll('a[href*="d.hatena.ne.jp/keyword"]')).map(linkTag=>{ 2 linkTag.style.pointerEvents = "none"; 3});

https://helloworld-blog.tech/javascript/javascriptcss%E3%81%A7%E5%B1%9E%E6%80%A7%E3%81%AE%E5%80%A4%E3%82%92%E9%83%A8%E5%88%86%E4%B8%80%E8%87%B4%E3%81%A7%E5%88%A4%E5%AE%9A%E3%81%99%E3%82%8B

投稿2022/08/17 02:04

sk-sora--ypi

総合スコア528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ok.2nd

2022/08/17 02:24

すみません。 無効にするのではなく、Aタグを除去したいのです。 質問の仕方が不十分でした。 実際にはJavaScriptではなく、WindowsのJScriptで行います。 HTMLが含まれるテキストファイルを読み込んで処理します。 str.replace()で正規表現などを使って、処理をしたいです。
guest

0

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('[href]').forEach(x=>{ 4 if(new RegExp("^https?://d.hatena.ne.jp/keyword").test(x.getAttribute('href'))){ 5 x.remove(); 6 } 7 }); 8}); 9</script> 10<a class="keyword" href="http://d.hatena.ne.jp/keyword/test1">test1</a> 11<a class="keyword" href="http://d.hatena.ne.jp/nottarget">test2</a> 12<a class="keyword" href="https://d.hatena.ne.jp/keyword/test3">test3</a> 13

vbsサンプル

htmlファイルを用意します。
//test.htm

html

1<a class="keyword" href="http://d.hatena.ne.jp/keyword/test1">test1</a> 2<a class="keyword" href="http://d.hatena.ne.jp/nottarget">test2</a> 3<a class="keyword" href="https://d.hatena.ne.jp/keyword/test3">test3</a> 4<a class="keyword" href="https://d.hatena.ne.jp/nottarget">test4</a>

以下のvbsファイルにドラッグアンドドロップします
//test.vbs

VBScript

1sub main() 2 set args= wscript.arguments 3 set oWSH =wscript.CreateObject("WScript.Shell") 4 set reg = CreateObject("VBScript.RegExp") 5 set fs = CreateObject("Scripting.FileSystemObject") 6 if args.count=0 then 7 msgbox "ファイルを落としてください。" 8 exit sub 9 end if 10 11 set f=fs.getfile(args(0)) 12 set otf = fs.OpenTextFile(f) 13 txt="" 14 Do While true 15 txt=txt+otf.readline+vbCrLf 16 if otf.AtEndOfStream then 17 exit do 18 end if 19 loop 20 otf.close 21 with reg 22 .Pattern="<a .*?href=""https?://d.hatena.ne.jp/keyword.*?</a>" 23 .IgnoreCase=true 24 .Global=true 25 end with 26 replacement="" 27 txt=reg.replace(txt,replacement) 28 msgbox txt 29end sub 30main()

投稿2022/08/17 01:59

編集2022/08/17 03:14
yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ok.2nd

2022/08/17 02:25

すみません。質問の仕方が不十分でした。 実際にはJavaScriptではなく、WindowsのJScriptで行います。 HTMLが含まれるテキストファイルを読み込んで処理します。 JScriptで、DOMが使えるのかどうか分かりません。 str.replace()で正規表現などを使って、処理をしたいです。
yambejp

2022/08/17 02:28

JScriptってIEの技術では?もうIEは動かないと思いますが?
m.ok.2nd

2022/08/17 02:34

私の理解ではJScriptとIEは関係ないかと思います。 JavaScriptで出来ることの大半(?)がそのままWindowsローカルのスクリプト言語として使えます。Windows固有の言語を勉強しなくて良いという利点があります。
yambejp

2022/08/17 02:38 編集

通常JScriptのHTML処理は CreateObject("InternetExplorer.Application") をしてIE上で処理をします。 今回の件はwshでたんに文字列として処理したいということなんですね?
m.ok.2nd

2022/08/17 02:45

はい、そうです。 今、別の方からいただいた回答でうまくいきそうです。 ありがとうございました。
yambejp

2022/08/17 03:11

VBSのサンプルをつけておきました
m.ok.2nd

2022/08/17 03:51 編集

VBSのサンプルありがとうございます。 他の方からいただいた方法をベースにしたJScript載せておきます。 var args = WScript.Arguments; var inputFile = args(0); var sr = new ActiveXObject("ADODB.Stream"); sr.Type = 2; // adTypeText sr.charset = "utf-8"; sr.Open(); sr.LoadFromFile(inputFile); var str = sr.ReadText(-1); // adReadAll sr.Close(); var out = str.replace(new RegExp('<a[^>]+href=\"https?://d\.hatena\.ne\.jp/keyword.*?>(.*?)</a>', 'g'), '$1') var sw = new ActiveXObject("ADODB.Stream"); sw.Type = 2; // adTypeText sw.charset = "utf-8"; sw.Open(); sw.WriteText(out, 1); // adWriteLine sw.SaveToFile(inputFile.slice(0,-4) + "-remove.txt", 2); // adSaveCreateOverWrite sw.Close();
yambejp

2022/08/17 03:52

今回は質問が曖昧すぎましたね。見た感じずぶの素人さんでもなさそうですし ファイルI/Oも含めて要件の提示は的確になさったほうがよいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問