プロが教える店舗&オフィスのセキュリティ対策術

質問があります。
タイトルの通りですが、JavaScriptのfor文を使いclassをすべて取得して、空だったら該当の文字列を入れたいです。

例えば、
var a = document.getElementsByClassName('article')
for(i=0;i<a.length;i++){
console.log(a[i].innerHTML)
}

こちらでclassにある情報をすべて取得できますが、その中で仮に a[2]が空っぽだった場合
そこにinnerHTMLで 該当の文字列を入れたいです。

該当の文字列とは、別のClassにあるとある文字列です。
もし、var b = document.getElementsByClassName('data')、 b[4]に該当の文字列、"test" があった場合、
この文字列をarticle[2]に入れたいです。

a[2],b[4]と書きましたが、これは常にa[2],b[4]とは限らないです。常に判断して、空の部分に
該当の文字列を入れたいです。

お手数ですがよろしくお願いいたします。

A 回答 (1件)

<!DOCTYPE html>


<html lang="ja">
<meta charset="UTF-8">
<title>test</title>

<body>
<ul id="hoge">
<li class="article">abc
<li class="article">
<li class="article">def
<li class="article">
</ul>

<ol id="fuga">
<li class="data">ABCDEFGHIJKLMNOPQRSTUVWXYZ
<li class="data">abcdefghijklmnopqrstuvwxyz
<li class="data">12345678901234567890123456
<li class="data">あいうえおかきくけこさしすせ
</ol>

<input type="button" value="「こさ」を含むもの" onclick="move (h, f, /こさ/)">
<input type="button" value="「789」を含むもの" onclick="move (h, f, /789/)">

<script>
function move (h, f, r) {
let
H = [...h].filter (e => e.textContent.trim() === ''),
F = [...f].filter (e => e.textContent.match (r)).map (e => e.textContent);
H.forEach (e => e.textContent = F.shift () || '');
}

let
h = document.getElementsByClassName ('article'),
f = document.getElementsByClassName ('data');

</script>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!