il ragionamento e' giusto ma non prevede che gli elementi in questione possano anche non esistere

in
getElementsByAttribute(document, "*", "title", "mio titolo")[0].setAttribute("href", "http://www.html.it");
dai per scontato che esista almeno un elemento con title="mio titolo"
quando questo non e' vero, nell' esempio, per 2 motivi:
1- nessun elemento ha title="mio titolo"
2- anche se avessero il title atteso quando richiami lo script non ci sono gli elementi che ti attendi
codice:
<body>
<script type="text/javascript">
// script richiamato fuori posto
// getElementsByAttribute(document, "*", "title", "mio titolo")[0].setAttribute("href", "http://www.html.it");
</script>

aaa
abc

<script type="text/javascript">
// script in posizione accettabile, valutera' i 2 link qui sopra
getElementsByAttribute(document, "*", "title", "mio titolo")[0].setAttribute("href", "http://www.html.it");
</script>

</body>
per evitare errori verifica che esista con un
if(getElementsByAttribute(document, "*", "title", "mio titolo")[0]){
// ...istruzioni riguardanti il primo elemento con il title in questione... //
}

ciao