This sample pulls in and toggles between multiple content blocks by Customer Key (@content_list).

<style>
    .content-div { display: none; }
    #content1 { display: block; }
    #buttonRow button {margin: 10px 0; width: 30px;border: 1px solid #ccc;}
</style>
%%[
  Set @content_list = 'ContentBlock1,ContentBlock2,ContentBlock3'

  Set @id_rowset = BuildRowsetFromString(@content_list,",")
  set @id_row_count = RowCount(@id_rowset)
  if @id_row_count > 0 then

    for @i = 1 TO @id_row_count do
    Set @row = Row(@id_rowset, @i)
    Set @display_content = Field(@row,1)
  ]%%

<div id="content%%=v(@i)=%%" class="content-div">%%=ContentBlockByKey(@display_content)=%%</div>
%%[ next @i endif ]%%
<div class="button-row" id="buttonRow"></div>

<script runat="server">
    Platform.Load("Core", "1");
    var content_list = Variable.GetValue("@content_list");
</script>

<script>
var content_list = "<script runat='server'>Write(content_list)</script>";
var labelsArray = content_list.split(',');

var buttonRow = document.getElementById('buttonRow');

labelsArray.forEach((label, index) => {
    var button = document.createElement('button');
    button.textContent = index + 1;
    button.addEventListener('click', () => {
        document.querySelectorAll('.content-div').forEach(div => div.style.display = 'none');
        document.getElementById(`content${index + 1}`).style.display = 'block';
    });
    buttonRow.appendChild(button);
});
</script>

Output:

Display ContentBlock1 Content
Display ContentBlock2 Content
Display ContentBlock3 Content