Newsgroup: it.comp.lang.javascript
Titolo: leggere e visualizzare una partita

ho questo problema
vorrei leggere e visualizzare un file pdn (è un file che serve per 
trascrivere le mosse del gioco della dama
il file si presenta in questo modo:
---------------------------------
[Dati "64° ASSOLUTO 2000"]
[Anno "2000"]
[Bianco "GASPARETTI"]
[Nero "BORGHETTI"]
[Risultato "1/2-1/2"]
[Apertura "0002"]
 
1. 23-20  11-14 2. 20-16  12-15 3. 28-23 15-19 4. 22x15  14-18 5. 21x14 
10-28 6. 32x23  7-12 7. 16x7 3x28 0-2
 
 
[Dati "68° Campionato Italiano Assoluto   9° Turno"]
[Anno "2004"]
[Bianco "Secchi"]
[Nero "Gasparetti"]
[Risultato "1/2-1/2"]
[Apertura "0002"]
 
1. 21-17  9-13 2. 26-21  5-9 3. 21-18 10-14 4. 17x10 14x21 5. 25x18  6x13
6. 23-19  1-5 7. 28-23  5-10 8. 32-28  2-5 9. 30-26 12-15 10. 19x12  8x15
11. 26-21 13-17 12. 23-19 17x26 13. 19x12  7x16 14. 18-14 11x18 15. 22x6
  3x10 16. 29x22 10-14 17. 28-23  9-13 18. 22-19 14-18 19. 27-22 18x27
20. 31x22 13-17 21. 19-14 17-21 22. 14-10  5x14 23. 22-18 14-19 24. 23x14
  4-8 1/2-1/2
--------------------------------------------------
 
 
pensavo di creare un array di 32 elementi
e procedere in questo modo:
 
assegno all'array la posizione iniziale leggendola dalla stringa fen se 
c'è,  altrimenti scrivo la posizione iniziale:
"xxxxxxxxxxxx........ooooooooooooW"
dove
 
la x corrisponde ad una casa occupata dalla pedina nera
la X maiuscola dalla dama Nera
la o minuscola dalla pedina Bianca
la O maiuscola dalla Dama Bianca
il punto sta per una casella vuota,
la w finale sta per chi deve muovere (bianco)
 
Una volta scritta la posizione iniziale dovrei modificarla leggendo il 
file, mi spiego meglio:
 
Prendendo ad esempio la prima partita se leggo le mosse che iniziano con 
1. (prima mossa) leggo 23-20 la prima mossa del giocatore bisogna 
modificare  il contenuto nell'array in questo modo
prendo l'array numero 20 lo  svuoto (sostituisco con il punto) e riempi0 
l'array 20 del contenuto del precedente array 23,  e scrivo la stringa 
di array terminando con la lettera B che significa che ora tocca al nero 
(vedi sotto). Poi procedo con la lettura, trovo 11-14 e via di seguito
 
 
 
<script language='JavaScript' type='text/javascript'>
<!--
states = [
'xxxxxxxxxxxx........ooooooooooooW',
'xxxxxxxxxxxx.......ooo.oooooooooB',
'xxxxxxxxxx.x.x.....ooo.oooooooooW',
'xxxxxxxxxx.x.x.o....oo.oooooooooB',
'xxxxxxxxxx...xxo....oo.ooooooooow',
]
Init();
GoTo(0);
 
 
chi mi da una mano??

 il file si presenta in questo modo:
 
Mi dispiace non essere stato sufficientemente chiaro nell'altro thread
che hai aperto, ma quello che vuoi fare deve essere fatto lato server.
 
Per essere espliciti, a livello crossbrowser, in JavaScript i file non
li leggi. Punto.
 
E se anche volessi fare una pagina che gira solo su Firefox per dire, è
l'utente che dovrebbe comunque avere il file della partita sul suo
computer, caricarlo sulla tua pagina (tramite <input type=file>), e
allora potresti leggerlo e generare ciò che ti serve, senza contattare
il server.
 
Da quello che mi spiegasti tempo addietro, e dal sito d'esempio che
portasti, il file con le partite - ovviamente - si trova sul server,
gli utenti (client) che accedono alla pagina non devono avere alcun file
da caricarci, scelgono solo le partite da visualizzare da una tendina, e
il server genera la pagina HTML (con del JavaScript) basandosi sui dati
che possiede.
 
Spero di essere stato più chiaro, stavolta. Se hai ancora dubbi, chiedi
pure.

Ciao Zero,
ho capito perfettamente quanto mi hai scritto.
Ora sto cercando di aggirare l'ostacolo.
Ciò che mi servirebbe è semplicemente questo:
data una posizione iniziale che all'inizio è questa:
"xxxxxxxxxxxx........ooooooooooooW"
vorrei che ad ogni mossa contrassegnata con numeri esempio
1. 23-20  11-14
dopo che ho letto 23-20  scrivo una seconda
 
scrivo al nuova stringa che è questa:
'xxxxxxxxxxxx.......ooo.oooooooooB',
ossia il contenuto della casella numero 23 viene svuotato (sostituito da 
un punto) e spostato nella casella 20 e termino la stringa con la 
lettera B che significa che ora tocca al nero (black).
poi se leggo 11-14 faccio la stessa cosa ed ottendo:
'xxxxxxxxxx.x.x.....ooo.oooooooooW',
mi dai una mano per favore..


 lettera B che significa che ora tocca al nero (black).
 
Okay, quindi:
 
    function executeMove(board, move) {
        board = board.split("");
 
        var moves = move.split("-");
 
        board[+moves[1]] = board[+moves[0]];
        board[+moves[0]] = ".";
 
        var colorPosition = board.length - 1;
 
        var color = board[colorPosition];
 
        board[colorPosition] = color === "W" ? "B" : "W";
 
        return board.join("");
    }
 
Assumendo che tu abbia una variabile tipo:
 
    var Board = "xxxxxxxxxxxx........ooooooooooooW";
 
Che mantenga lo stato generale della scacchiera, allora per eseguire la
mossa "23-20" e avere lo stato aggiornato, dovresti fare:
 
    Board = executeMove(Board, "23-20");
 
Se vuoi eseguire la mossa senza aggiornare lo stato corrente ti basta
non sovrascrivere Board:
 
    var nextMove = executeMove(Board, "23-20");
 
Quindi ora avrai `Board` sempre nella stessa situazione di prima, mentre
in `nextMove` avrai la scacchiera aggiornata.
 
Questo è tutto quello che puoi fare da JS. Dove vai a leggere il file e
come passi le mosse a JS, non puoi farlo da JS stesso. Devi usare un
linguaggio server side.

Grazie per la tua grande disponibilità, anche se le mie conoscenze nel 
settore informatico sono proprio poche.
L'idea che mi è venuta per girare l'ostacolo è questa:
metto in una variabile le mosse:
tipo questa:
var Board = "xxxxxxxxxxxx........ooooooooooooW";
varmovesStr="22-19,11-15,27-22,7-11,23-20,10-14,19-10:14,5-14:10,20-16,3-7,28-23,1-5,22-19,15-22:19,26-1:22:14:5,12-15,1-5,11-14,23-19,14-23:19,32-28,23-32:28,6-10,32-28"
 
metto la posizione iniziale
var Board = "xxxxxxxxxxxx........ooooooooooooW";
e poi se richiamo la tua funzione ottengo per ogni mossa la
la posizione
[xxxxxxxxxxxx........ooooooooooooW];
[xxxxxxxxxxxx.......o.oooooooooooB];
 
 
ma non riesco proprio a farlo..
dammi una @ dove posso scriverti alcune cose per favore..
grazie


 grazie
 
Spero ti sia più chiaro, se hai altri dubbi chiedi pure.
 

come concetto mi è chiaro è che non ci riesco per niente..
allora dovresti dare un occhiata qua..
http://www.damasport.it/dama//board/int/esempio1.html
 
 
questo è ciò che sono riuscito a fare ma il lavoro grosso lo faccio 
ancora a  mano, vorrei invece riuscire a farlo con un eseguibile e poi 
copiarlo. Tutto qua.
Come ben sai non è ciò che avevo in mente ma è pur sempre un buon inizio.


 Come ben sai non è ciò che avevo in mente ma è pur sempre un buon inizio.
 
In JS, HTML e CSS puoi fare di meglio, ma ci vuole pazienza all'inizio e
soprattutto va visto per quali browser sei intenzionato a fare questo sito.
Se ti interessa imparare, e non solo avere il prodotto finito, posso
vedere di aiutarti maggiormente, ma sarà un percorso un po' più lungo.

    var movesArray = "22-19,11-15,27-22".split(",");
ciao zero,
grazie per la disponibilità + volte dimostrata,
la funzione che mi hai dato ho provato a farla girare ma deve essere 
modificata per questi motivi:
 
1) lo states che restituisce è sbagliato ossia se scrivo 21-17,  lui 
provvede allo spostamento della 22-18  è come se partisse a contare da 0 
e non da 1 quindi sposta la 22.
 
2) non ti ho parlato delle prese che vengono contrassegnate dalle x 
(esempio 23-10, 10-14, 19x10, 5x14)  dove  in questo caso anche le 
posizioni intermedie devono essere svuotate (la 19 e la 10 per 
intenderci)    in teoria sarebbe stato meglio se nella stringa ci fosse 
scritto 19x14x10 (dove viene tolta la 14) e 5x10x14  (dove viene tolta 
la 10)
che dici si può fare???

 che dici si può fare???
 
Si, ma mi sembra che tu adesso stia tornando a volere un parser del file
PDN, e quella semplice funzione che ti ho fatto per la casistica del tuo
post precedente, non può sostituire un parser PDN completo.

Intanto potremmo semplicemente risolvere il punto 1
sarebbe comunque un buon risultato,



 
Seconda di poi, ti ho detto come fare a sistemare la funzione. Ti ho
spiegato come mai hai quel risultato, e cosa fare per sistemarlo. Se il
fix è sbagliato o non va, allora vediamo come risolvere il problema.
 
Questo è un newsgroup e le persone che sono qui ci sono perché vogliono
imparare, e condividere ciò che hanno imparato. Se non dimostri un
minimo di interesse e/o "intraprendenza" nello sporcarti un po' le mani
col codice, allora il nostro aiuto non può andare più in là di tanto.
 
Se il tuo scopo non è imparare JavaScript, o almeno capirci qualcosa di
programmazione, va bene. Ma allora ti consiglio di trovare del codice
che fa già quello che ti serve, se non lo trovi in JS ripiega su qualche
altro linguaggio. Ad esempio, ho visto che esiste un parser di file PDN
in python che puoi usare lato server, o per creare l'eseguibile che
dicevi tu.
 
Alternativamente puoi cercare qualcuno da affiancarti in quest'impresa,
che faccia il codice JS al posto tuo, ma mi sembra tu c'abbia già
provato in passato con scarsi risultati.
 
Puoi sempre aspettare che qualcuno faccia un PDN Parser in JS, e lo
rilasci pubblicamente in modo che chiunque possa usarlo. Non ti nego che
non mi dispiacerebbe farlo appena ho un po' di tempo, ma non è tra le
mie proprità in questo momento, e chissà se e quando mi ci metterò.
 
Per ultimo, è l' "intanto" che preoccupa. Rischi poi di voler aggiungere
funzionalità su funzionalità in qualcosa che non è stato fatto per
quello scopo, finendo con codice rattoppato ovunque. È una cosa che si
vede fin troppo spesso.
 
Se il tuo scopo è fare il parsing di file PDN a modo, allora su quello
devi puntare. Non so qualcosa che ne simula bene o male le funzionalità
base. Mi riferisco non solo alla funzione che ti ho scritto, ma anche
alla gestione delle stringa che hai impostato.

 alla gestione delle stringa che hai impostato.
 
questo è l'obiettivo finale, ma intanto volevo qualcosa per evitare di 
smanettare ogni volta a mano...

 smanettare ogni volta a mano...
 
Capisco, ma tieni a mente che non potrai avere tutte le funzionalità che
pretendi senza fare un parsing a modo del file PDN.
 

 a fare? Se ti da risultati inaspettati, vediamo di sistemarla assieme.
Purtroppo ci ho perso un sacco di tempo provo e riprovo ma niente.
In pratica ho provato ad inserire
alert(states)  dopo for...
 
vedi..
 
for (var i=0; i < movesArray.length; i++) {
          states[i+1] = executeMove(states[i], movesArray[i]);
           alert(states);
 
 
e vedo che lo states che si forma è sbagliato ossia aumenta di uno, in 
pratica la mossa 23-19  la trasforma in 24-20.
 
ho provato quindi ad aggiungere 1 nella funzione executeMove da 
qualsiasi parte ma niente..
Poi finalmente a notte fonda,ho pensato di inserire -1 e ci sono 
riuscito in questo modo
 
  function executeMove(board1, move)
  {
         board1 = board1.split("");
 
         var moves = move.split("-");
 
         board1[+moves[1]-1] = board1[+moves[0]-1];
         board1[+moves[0]-1] = ".";
 
         var colorPosition = board1.length - 1;
 
         var color = board1[colorPosition];
 
         board1[colorPosition] = color === "W" ? "B" : "W";
    alert(states);
         return board1.join("");
 
     }
 
grazie per l'aiuto ora però  mi riblocco di nuovo per via delle prese.
mi spiego meglio.
la funzione va benissimo, il problema è che non gestendo le prese non 
serve, bisognerebbe ricreare tutti gli states e scriverli
[ ]
 
proverò ad usare il primo consiglio che mi avevi dato.
se hai altre idee dimmi pure

 serve, bisognerebbe ricreare tutti gli states e scriverli
 
Per questo ti ho detto che avresti bisogno di un parser PDN come dio
comanda. Le prese si potrebbero gestire, ma: dovrebbero essere sempre
nel formato S1xS2 (S = Square) e non S1xS2xS3 ad esempio, il che in una
partita può accadere immagino. In questo caso devi cambiare nuovamente
la funzione, e come ti ho detto stai finendo per fare codice rattoppato
per cercare di avere qualcosa che somigli a un parser PDN.
 
Inoltre bisogna sapere il formato della scacchiera, che deve essere
fisso (tipo 8x8 o 10x10), visto che non lo leggi dal file PDN, in modo
da calcolare gli step intermedi.

 da calcolare gli step intermedi.
 
Il formato di gioco è scritto nel file pdn è un tag e si differenzia 
anche per le caratteristiche del gioco oltre che dalla misura (8x8, 
10x10, 12x12 ecc)
 
 
 
 

 10x10, 12x12 ecc)
 
Lo so, appunto per questo ti sto dicendo che senza un parser PDN questi
valori non ce li hai.


ci ho provato e riprovato ma non funziona ricevo errori strani:
inizialmente pensavo di usare la funzione abs poi ho preferito usare if
ma ottengo ancora degli errori.
questo il codice
  var movesArray = 
"23-20,12-16,20-15,11-20,24-15,10-14,28-24,14-19,21-18,5-10,25-21,7-12,18-14,1-5,31-28,10-13,14-11,5-10,27-23,10-14,21-17,6-10,24-20,3-6,29-25,13-18,22-13,9-18,26-21,19-22,23-19,16-23,28-24,22-27,".split(",");
  for (var i=0; i < movesArray.length; i++) {
          states[i+1] = executeMove(states[i], movesArray[i]);
           // alert(states);
     }
 
 
  function executeMove(board, move)
  {
         board = board.split("");
 
         var moves = move.split("-");
 
 
if 	(moves[0]-1 - moves[1]-1 >4 )
     {
			var front = moves[0]-1 - 8;
	    	    var captured = moves[1]-1 > front ? front + 3 : front + 5;
  	    		board[captured-1 ] = ".";
 
     }
 
if 	(moves[0]-1 - moves[1]-1 <-5 )
     {
			var front = moves[0]-1 + 8;
	    	    var captured = moves[1]-1 < front ? front -5 : front - 3;
  	    		board[captured-1 ] = ".";
 
 
 
   // alert(captured)
     }
 
 
 
    board[+moves[1]-1] = board[+moves[0]-1];
         board[+moves[0]-1] = ".";
 
 
 
         var colorPosition = board.length - 1;
 
         var color = board[colorPosition];
 
         board[colorPosition] = color === "W" ? "B" : "W";
 
         return board.join("");
 
praticamente muove correttamente fino alla presa 24-15 poi prosegue 
correttamente con 10-14, 28-24 e qui dovrebbe muovere 14-19, la mossa la 
esegue ma mi toglie anche il pezzo in 16 non capisco proprio.
ho provato con alert ma non trovo il problema.

         var moves = move.split("-");
 
Dovendo gestire le prese, ti converrebbe usare le 'x' come separatore, e
controllare quello, modificando `executeMove` di conseguenza:
 
    var moves = move.match(/(\d+)(x|-)(\d+)/);
 
    var from = +moves[0];
    var to = +moves[2];
    var isCapture = moves[1] === "x";
 
    if (isCapture) {
        var capture = getCapturedSquare(from, to);
        board[captured - 1] = "."
    }
 
    from = from - 1;
    to = to - 1;
 
    board[to] = board[from];
    board[from] = ".";
 
    /* etc */
 
La funzione `getCapturedSquare` sarà più o meno come il codice che ti ho
mostrato nell'altro post:
 
    function getCapturedSquare(from, to) {
 
        // Se `from` < `to` scambiamo i due indici
        if (from < to) {
            from ^= to;
            to ^= from;
            from ^= to;
        }
 
        var front = from - 8;
 
        return to > front ? front + 4 : front + 3
    }
 
Ricorda di verificare che non vi siano problemi di array boundaries, e
se hai problemi di aggiornare il codice online con la scacchiera, in
modo da poter verificare visivamente eventuali problemi ed errori (il
codice che ti sto facendo è al volo, e alla cieca).

l'errore che ricevo  lo puoi vedere qui
http://www.damasport.it/dama/board/int/zero1.html
 

 
http://www.damasport.it/dama/board/int/zero1.html
 
 
Applica prima le modifiche che ti ho dato, vedi se ti da lo stesso
errore – o di diversi – usa `console.log` per debuggare.


non so usare console log.
comunque mi da altri problemi
è in linea

 comunque mi da altri problemi
 
Hai semplicemente fatto un banale copia & incolla senza capire il codice
che ti ho scritto. C'è un errore molto banale che hai fatto nel copiare
il sorgente che dovrebbe saltarti agli occhi guardando la tua funzione.
Se non ti è chiaro, scrivi il sorgente della tua funzione `executeMove`
qui sul NG, prova ad analizzarlo riga per riga, e commentarlo, cercando
di capire "cosa" fa. Se c'è del codice che non ti torna o è poco chiaro,
vedremo di capirlo assieme.
 
Una volta sistemato almeno quell'errore, che è il motivo per cui adesso
hai nuovi problemi, vedremo se ce ne saranno altri, e li sistemeremo
assieme.

 On 24/10/11 12:57 , mitico- wrote:
 
fatte tutte le modifiche del caso ma non funziona ancora, credo che il 
problema sia legato alla funzione
 
// Se `from` < `to` scambiamo i due indici
         if (from < to) {
             from ^= to;
             to ^= from;
             from ^= to;
         }
e conseguentemente al valore restituito dalla variabile to
 
che sinceramente non ho capito bene come funziona il comando ^=,
 
mi dai un occhiata per favore sul sito..


 
Lo XOR può essere usato per scambiare il valore numerico di due
variabili, senza usare una variabile di appoggio. In pratica quelle tre
linee sopra, mettono `to` in `from`, e `from` in `to`, nel caso `from`
sia minore di `to`. Quindi se alla funzione `getCapturedSquare` passi
19x10 o 10x19 vengono trattati entrambi allo stesso modo.

Il 24/10/2011 18.06, ZER0 ha scritto:
chiedo scusa, ero convinto di aver messo in linea la nuova versione per 
la quale ti chiedevo un aiutino ma non ho sovrascritto il file.
L'errore che riscontro è lo spostamento del pezzo in presenza di una 
presa da parte del nero (quando from è minore di to mi pare) e non 
toglie il pezzo preso.

 e non toglie il pezzo preso.
 
Lo toglieva... Solo alla casella adiacente (la 19). :) In questo, potevi
arrivarci da solo anche senza conoscenze di programmazione, sia
debuggando il codice (vendendo la casella catturata), sia osservando le
diagonali sulla scacchiera. Poi non avresti saputo implementare la
soluzione, ma sarebbe già stato un bel passo avanti capire cosa non andava.

Il 25/10/2011 1.07, ZER0 ha scritto:
 
Mi hai preceduto, ieri sera tardi avevo capito il problema e pensavo di 
rioslverlo
  modificando questa riga.....
return to > front ? front + 4 : front + 3;
 
in pratica nell'ipotesi dell if andava invertito il segno o se 
preferisci front + 3 : front + 4;
.
Nel io piccolo pensavo semplicemente di sostituire i due valori con due 
variabili e all'occorrenza sostituirne i valori.
Ma la tua soluzione è senz'altro migliore.
GRAZIE dell'infinita pazienza.
 
  che in pratica si trattava di invertire il segno della funzione


Il 25/10/2011 8.29, mitico- ha scritto:
 
piccolo intoppo, una cosa alla quale non ci avevo minimamente pensato.
Gli spostamenti avvengono leggendo la stringa movesArray = con le 
funzioni che mi hai segnalato.
Ma il tutto viene limitato da questa parte.
...
    <div class="hidden" id="solution1">
 
       <a href="javascript:GoTo(1)" class="move1">1.11-6</a>
<a href="javascript:GoTo(2)" class="move1">23x16</a>
...
in pratica se quà ho solo una sequenza di 3 goto (vedi sopra) la 
visualizzazione si interromperà alla 3 mossa indipendentemente dalla 
stringa.
e ovviamente ciò che compare come class move (1.11.16 ad esempio)  è 
ininfluente(dovrebbe corrispondere  la variabile moves[0] nel nostro 
caso ma è ininfluente.
 
cosa mi consigli??
 

 GRAZIE dell'infinita pazienza.
 
Prego. :)

 cosa mi consigli??
 
Non ho ben capito la tua problematica.

 spiegato non ha nulla ha che vedere con il segno.
 
evidentemente non avevo capito.
Il mio ragionamento si fermava al controllo della casella front.
Avevo constatato  che
con 19x10 (presa la 14) avevo questa situazione:
front 11    to 10   quindi front >to
 
nel caso 10x19 (presa la 14)
 
front 18    to  10   quindi front > to
 
questo il mio ragionamento..
 
rispondo all'altro messaggio.
 
 >> in pratica se quà ho solo una sequenza di 3 goto (vedi sopra) la
 >> visualizzazione si interromperà alla 3 mossa indipendentemente dalla
 >> stringa.
 
 >Quindi, quale sarebbe il problema? Se hai anche una stringa di sei
 >mosse, ma la fai proseguire solo fino alla terza, che problema c'è?
 
il problema stà nel fatto che se invece intendi proseguire con un numero 
maggiore di mosse presenti nel
movesArray
 
se non ha le stringhe di goto non lo fa..
 
se vai sul sito lo puoi sperimentare..
vedi che arriva solo alla mossa 7-12  mentre nell'array passato ci sono 
tantissime altre mosse.
So che risolvo mettendo a manina altri goto ma c'è un altra soluzione??
 
 
 
 
 

 So che risolvo mettendo a manina altri goto ma c'è un altra soluzione??
 
Quindi la tua domanda sarebbe "come posso evitare di riscrivere nella
soluzione tutte le mosse a manina"?

 soluzione tutte le mosse a manina"?
 
si .
 

 si .
 
Puoi generare il contenuto dinamicamente, come hai già fatto nella
pagina, usando `document.write` e applicando il concetto di cui sopra.
 
A essere onesti, `document.write` non si usa praticamente più (si fa uso
delle DOM API), e anche lo pseudo protocollo "javascript:" che te hai
usato abbondantemente negli href dei link, è preferibile evitarlo in
favore di eventi come `onclick`. Ma hai già diversa carne al fuoco, e
non voglio complicarti ulteriormente la vita. Per il momento ti funziona
questo approccio, quindi va bene così. Potrai sempre fare un refactoring
più avanti del codice, migliorandolo, una volta che ci avrai preso più
la mano.

 console.log("1. " + movesArray[0] + " " + movesArray[1])
in genere uso firefox ma anche chrome.
con firefox apro firebug, c'è la console ma non visualizza nulla.
nemmeno se muovo.
 


mentre ho visto che con chrome funziona benissimo...
 


Probabilmente apri la console (web console o quella di Firebug) solo
dopo aver caricato la pagina. Devi farlo prima.
Quindi, apri la pagina in questione, apri la web console / firebug
console, e poi fai il reload della pagina.
 
La console si chrome (quella di webkit) usa le stesse specifiche di
quella introdotta da firebug, dovrebbero funzionare bene entrambe.

 quella introdotta da firebug, dovrebbero funzionare bene entrambe.
Funziona bene, ottimo.
Non ho ben capito come faccio a creare queste righe in automatico 
all'interno del file html:
 
<a href="javascript:GoTo(1)" class="move1">1.11-6</a>
<a href="javascript:GoTo(2)" class="move1">23x16</a>
<a href="javascript:GoTo(3)" class="move1">2.14-11</a>
<a href="javascript:GoTo(4)" class="move1">5x14</a>
<a href="javascript:GoTo(5)" class="move1">3.11-15</a>
<a href="javascript:GoTo(6)" class="move1">4x20</a>
<a href="javascript:GoTo(7)" class="move1">4.18-13</a>
<a href="javascript:GoTo(8)" class="move1">16x7</a>
<a href="javascript:GoTo(9)" class="move1">5.25x4</a>
 
 
 

 all'interno del file html:
 
Te l'ho detto, usando `document.write`. Già lo usi nel tuo codice, per
quello ti ho suggerito quel metodo, visto che già lo conosci (usandolo,
dovresti conoscerlo).