Hola,
Si no quieres usar Jquery tienes varias opciones, una de ellas es usar el arbol de nodos del dom.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<form name="prueba">
<div><h1>titulo 1</h1><input type="button" onclick="javascript:alert(this.parentNode.childNodes[0].childNodes[0].nodeValue)"></div>
<div><h1>titulo 2</h1><input type="button" onclick="javascript:alert(this.parentNode.childNodes[0].childNodes[0].nodeValue)"></div>
<div><h1>titulo 3</h1><input type="button" onclick="javascript:alert(this.parentNode.childNodes[0].childNodes[0].nodeValue)"></div>
</form>
</body>
</html>
No pongas retornos de carro dentro de los divs, porque firefox al acceder a los nodos padre o hijo tiene en cuenta los retornos de carro y los cuenta como un nodo(lo cual es ridículo pero en fin...)
Tb podriás usar id en las H1 junto getelementbyid, pero ya tendrías entonces que ir cambiando los id en cada h1 y cada boton, por eso creo que la otra opción es mejor:
<h1 id="tit1">tituloa1</h1>
<input type="button" onclick="javascript:alert(document.getElementById('tit1').innerHTML)"></div>
<div>
<h1 id="tit2">tituloa2</h1>
<input type="button" onclick="javascript:alert(document.getElementById('tit2').innerHTML)"></div>
Y todo esto lo digo por si no quieres usar jquery que a mi por ejemplo no me gusta usarlo si no hace falta.
Un saludo.