Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

document.open : pourquoi mon code ne marche-t-il pas ?

6 réponses
Avatar
Fabrice DELENTE
Bonjour.

Désolé si cette question a déjà été posée, mais je n'arrive à rien trouver
sur le réseau qui semble ressembler.

J'ai testé le code suivant :

--------------------------------------------------------------------------
<html>
<body>

<script type="text/javascript">

var oldDoc=window.document;

function doc1() {
var newDoc=oldDoc.open("text/html","replace");

newDoc.write("document1<p>");
newDoc.write("<form><input type=button value=\"aller au document 2\" onclick=\"doc2()\"></form>");
newDoc.close();

oldDoc=window.document;
}

function doc2() {
var newDoc=oldDoc.open("text/html","replace");

newDoc.write("là c'est le document 2<p>");
newDoc.write("<form><input type=button value=\"retour au document 1\" onclick=\"doc1()\"></form>");
newDoc.close();

oldDoc=window.document;
}

doc1();

</script>

</body>
</html>
--------------------------------------------------------------------------

dans firefox, ça ne marche pas; je peux passer du document 1 au document 2,
mais impossible de retourner au document 1 lorsque je suis sur le document
2.

Qu'est-ce que je n'ai pas compris dans document.open() ?

Merci.

À bientôt.

--
Fabrice DELENTE

SVP, ne m'envoyez pas de pièces jointes aux formats Word, PowerPoint, RTF
(formats propriétaires). Utilisez des formats libres comme txt, html,
OpenOffice.Org ou PDF. Merci. Voir
http://www.gnu.org/philosophy/no-word-attachments.fr.html

6 réponses

Avatar
Pierre Goiffon
Fabrice DELENTE wrote:
J'ai testé le code suivant :

--------------------------------------------------------------------------
<html>
<body>

<script type="text/javascript">

var oldDoc=window.document;

function doc1() {
var newDoc=oldDoc.open("text/html","replace");

newDoc.write("document1<p>");
newDoc.write("<form><input type=button value="aller au document 2" onclick="doc2()"></form>");
newDoc.close();

oldDoc=window.document;
}

function doc2() {
var newDoc=oldDoc.open("text/html","replace");

newDoc.write("là c'est le document 2<p>");
newDoc.write("<form><input type=button value="retour au document 1" onclick="doc1()"></form>");
newDoc.close();

oldDoc=window.document;
}

doc1();

</script>

</body>
</html>
--------------------------------------------------------------------------

dans firefox, ça ne marche pas; je peux passer du document 1 au document 2,
mais impossible de retourner au document 1 lorsque je suis sur le document
2.


Je suis assez surpris : quel est le besoin sous-jacent ?

Avatar
Fabrice DELENTE
Je suis assez surpris : quel est le besoin sous-jacent ?


Le but est de rester dans le même fichier; le 1er document est un tableau où
on rentre des valeurs numériques et on coche des cases; le 2ème document
calcule un résultat à partir des valeurs, en fonction des cases cochées; si
on veut faire un autre choix pour les cases cochées, il faut revenir en
arrière au 1er document.

Je veux rester dans le même fichier, car ce programme est destiné à être
installé et utilisé par des collègues pas informaticien pour 2 sous (je ne
le suis pas moi-même, je dépanne seulement), donc en ayant un seul fichier
la "difficulté" d'installation est minimum.

Enfin, le besoin est aussi de comprendre pourquoi ça ne marche pas :^) je
n'aime pas rester avec un problème sans réponse sur les bras.

À bientôt.

--
Fabrice DELENTE

SVP, ne m'envoyez pas de pièces jointes aux formats Word, PowerPoint, RTF
(formats propriétaires). Utilisez des formats libres comme txt, html,
OpenOffice.Org ou PDF. Merci. Voir
http://www.gnu.org/philosophy/no-word-attachments.fr.html

Avatar
François Girault
Je suis assez surpris : quel est le besoin sous-jacent ?


Le but est de rester dans le même fichier; le 1er document est un tableau où
on rentre des valeurs numériques et on coche des cases; le 2ème document
calcule un résultat à partir des valeurs, en fonction des cases cochées; si
on veut faire un autre choix pour les cases cochées, il faut revenir en
arrière au 1er document.


Utiliser deux éléments <div> dont on ajuste le style (display) et le
contenu (innerHTML) en conséquence me semble la bonne solution.

--
FG


Avatar
ASM

Qu'est-ce que je n'ai pas compris dans document.open() ?


c'est surtout à propos de document.write() que tu n'as pas compris.

quand tu fais écrire le document 2
ça efface tout le document 1 (old)

il n'y a donc plus le javascript des fonctions ...
... alors ... forcément ... ça fonctionne moins bien ! :-(

Pour faire de la modification de contenu il vaudrait mieux te tourner
vers le DOM


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Fabrice DELENTE
il n'y a donc plus le javascript des fonctions ...
... alors ... forcément ... ça fonctionne moins bien ! :-(


Ok, je n'avais pas pensé à ça :^)

Merci.

À bientôt.

--
Fabrice DELENTE

SVP, ne m'envoyez pas de pièces jointes aux formats Word, PowerPoint, RTF
(formats propriétaires). Utilisez des formats libres comme txt, html,
OpenOffice.Org ou PDF. Merci. Voir
http://www.gnu.org/philosophy/no-word-attachments.fr.html

Avatar
Pierre Goiffon
François Girault wrote:
Je suis assez surpris : quel est le besoin sous-jacent ?


Le but est de rester dans le même fichier; le 1er document est un
tableau où
on rentre des valeurs numériques et on coche des cases; le 2ème document
calcule un résultat à partir des valeurs, en fonction des cases
cochées; si
on veut faire un autre choix pour les cases cochées, il faut revenir en
arrière au 1er document.


Utiliser deux éléments <div> dont on ajuste le style (display) et le
contenu (innerHTML) en conséquence me semble la bonne solution.


Manipuler 2 div avec des display= 'none' et display= '' me parait en
effet bien moins hasardeux. Puisque vous voulez 2 écrans, pourquoi donc
effectuer tout le traitement côté client ??