JSFiddle - React, Tailwind, and code Playground

HTML

<h5>1つめ</h5>
<ul>
  <li>Background color1 <input type="color" data-bg="1"></li>
  <li>Background color2 <input type="color" data-bg="1"></li>
</ul>
<p class="msg" data-bg-area="1">背景色(CSSでデフォルト灰色にしてます)</p>

<hr>

<h5>2つめ</h5>
<ul>
  <li>Background color1 <input type="color" data-bg="2"></li>
  <li>Background color2 <input type="color" data-bg="2"></li>
</ul>
<p class="msg" data-bg-area="2">背景色(CSSでデフォルト灰色にしてます)</p>

<hr>

<h5>3つめ</h5>
<ul>
  <li>Background color1 <input type="color" data-bg="3"></li>
  <li>Background color2 <input type="color" data-bg="3"></li>
</ul>
<p class="msg" data-bg-area="3">背景色(CSSでデフォルト灰色にしてます)</p>

CSS

.msg {
  width: 200px;
  height: 100px;
  background-color: #ccc;
}

JavaScript

// 必要な要素の取得
const colorInputs = document.querySelectorAll('input[type="color"]');

// input全てにイベントリスナーを設定
colorInputs.forEach(input => input.addEventListener('change', setBGcolor));

// 背景色を変更する関数
function setBGcolor(event) {
  // カスタムデータ属性data-bgの値(数字)を取得
  const number = event.currentTarget.dataset.bg;

  // そのデータ属性をもつinputを取得
  const inputs = document.querySelectorAll(`[data-bg="${number}"]`);
  // input2つとものvalueを取得し、それぞれ変数に代入
  const [color1, color2] = [...inputs].map(input => input.value);

  // 同じ番号のdata-bg-areaをもつ要素を取得
  const msgArea = document.querySelector(`[data-bg-area="${number}"]`);
  // 取得されるvalueにはすでに#がついているので、↓の中で#を書いてはいけない
  msgArea.style.background = `linear-gradient(${color1}, ${color2})`;
}