Oi, João, como vai?
Isso tá acontecendo porque no segundo while
, após as execuções, o valor da variável colunas
fica zerado porque você está diminuindo o valor dela até chegar em 0. Uma alternativa para solucionar isso seria adicionar no código uma variável auxiliar para guardar o valor que é inserido pelo usuário, e com essa variável, toda vez que o valor de colunas
ficar zerado, a gente diz que o valor dela é igual ao valor da variável auxiliar, que guardará o valor inicial inserido pelo usuário no prompt.
O código ficaria assim:
<script>
let variavel = prompt("O que você deseja repetir?");
let linhas = parseInt(prompt("Qual o número de linhas?"));
let colunas = parseInt(prompt("Qual o número de colunas?"));
let colunasAux = colunas;
while(linhas > 0){
while(colunas > 0){
document.write(variavel);
colunas--
};
document.write("<br>");
linhas--;
colunas = colunasAux
};
</script>
Espero ter ajudado.
Abraços e bons estudos!