Dúvidas sobre onclick

Eu tenho um botão.

A dúvida é o seguinte:

Se o código fica assim funciona normalmente. Quando eu clicar no botão chama a função.

[code]

[/code]

Agora se dentro do script eu coloco uma função em java, ele ignora o clique do botão e executa. Ou seja, executa a função sem eu clicar no botão. Isto está certo?

<SCRIPT> function vai() { <%mostrartudo=1;%> } </SCRIPT>

sim está correto, vc precisa entender o ciclo de vida da sua página.
quando vc escreve <%alguma coisa%> essa parte é renderizada para código html durante a construção da página, por isso vai executar mesmo vc não chamando ainda a função.

E você conhece alguma maneira de isto só acontecer quando eu clicar no botão?

coincidentemente fiz isso aqui agora a tarde. rs
fiz usando JSF, vc tenta adaptar aí

<rich:panel id="scriptSelecao">
			<script type="text/javascript">
			function showPopupMap(option){
				var pageSelecao = urlBase + '#{mapaMB.pageSelecao}';
				var dialogOpts = {
						width: 230,
						height: 160,
						minWidth: 150,
						minHeight: 150,
						maxWidth: 300,
						modal:true,
						maxHeight: 300
					};
				if(option){
					$("#popupMap").load(pageSelecao).dialog(dialogOpts);
				}else{
					$("#popupMap").load(pageSelecao).dialog({modal:true});
				}
			}
			</script>			
		</rich:panel>


<a4j:jsFunction name="setSelecaoMapaJsMB" render="scriptSelecao" action="#{mapaMB.identificaSelecaoMapa}" oncomplete="showPopupMap();">
				<a4j:param name="selecao" assignTo="#{mapaMB.selecaoMapa}" />
			</a4j:jsFunction>

o segredo está no render do jsFunction, quando eu executo algo eu mando renderizar o componente panel e meu script está nele, dessa forma ele atualiza o valor do mb.

note que sempre que minha página carregar ele vai ler o valor var pageSelecao = urlBase + ‘#{mapaMB.pageSelecao}’;
na primeira vez ficará null, mas quando usuário clicar no botão, aí eu executo a regra necessário para preencher o mapaMB.pageSelecao e aí dou um “render” forçando o carregamento do penel novamente preenchendo o valor da variável pageSelecao do meu script.