はてなブログのタイトルに JavaScript で文字数を表示する
はてなブログのタイトルに JavaScript で文字数を表示する
369文字
https://gyazo.com/ea83f6aecfa1549ce837b2d150d339e1
code:html
<header class="entry-header">
<div class="date entry-date first">
<time datetime="2022-05-07T09:15:50Z" title="2022-05-07T09:15:50Z">
<span class="date-year">2022</span><span class="hyphen">-</span><span class="date-month">05</span><span class="hyphen">-</span><span class="date-day">07</span>
</time>
</a>
</div>
<h1 class="entry-title entry-title-empty">369文字</h1>
</header>
記事に題名がないないときに h1 に entry-title-empty という Class が設定される
題名があるとき
code:html
<h1 class="entry-title">
</h1>
題名がないとき
code:html
<h1 class="entry-title entry-title-empty">
</h1>
コードは、
code:js
[].forEach.call(
document.querySelectorAll('article'),
(a) => {
var c = 0;
[].forEach.call(
a.querySelectorAll('p'),
(p) => c += p.textContent.length
);
console.log(c);
var h = a.querySelector('h1.entry-title.entry-title-empty');
if (h) h.textContent = ${c}文字
}
);
call とか => とか、知らん
let じゃなくて var なのはスコープの問題? → let でも動いたわ
こっちの方が、思っている文字数と一致する
code:js
[].forEach.call(
document.querySelectorAll('article'),
(a) => {
let c = 0;
[].forEach.call(
a.querySelectorAll('.entry-content p'),
(p) => c += p.textContent.length
);
console.log(c);
var h = a.querySelector('h1.entry-title.entry-title-empty a');
if (h) h.textContent = ${c}文字
}
);
はてなブログダッシュボード>設定>詳細設定タブ>headに要素を追加
<head>要素にメタデータを追加