Попытка скопировать значение скрытого ввода вызывает здесь беспокойство, поэтому сначала раскройте его
Просто нужно изменить порядок строк кода.Напишите id1.style.display = "block";
перед командами копирования.
var id1 = document.getElementById('id1');
var id2 = document.getElementById('id2');
id2.onclick = function() {
id1.style.display = "block";
//copying the value to clipboard
id1.select();
document.execCommand('copy');
id2.style.display = "none";
}
<input id="id1" type="text" value="text text text!" style="display:none">
<input id="id2" type="button" value="Copy text">