2017-10-16 2 views
0

Je fais un exercice javascript incroyablement basique pour l'école pratiquant des objets. Je pensais que le document.write normal fonctionnerait mais il n'a pas, j'ai regardé beaucoup d'endroits mais beaucoup de ceci est juste pour la console. L'erreur estComment écrire un objet Javascript dans le document. Échec de l'exécution de 'write' sur 'Document'

Echec de l'exécution de 'write' sur 'Document': il n'est pas possible d'écrire dans un document à partir d'un script externe chargé de façon asynchrone sauf s'il est explicitement ouvert.

Si quelqu'un peut aider ce serait une grande appels, désolé s'il est vraiment facile

Voici mon code

var oPerson = { 
 
    firstName: 'John', 
 
    lastName: 'Travis', 
 
    gender: 'Male', 
 
    age: 22, 
 
    district: 'Northshore', 
 
    hairColor: 'Brown', 
 
    hairLength: 'Short', 
 
    height: '6\'11"', 
 
    weight: '74kg', 
 
    martialStatus: 'Engaged' 
 
} 
 

 
document.write(oPerson); 
 
document.write(oPerson.district); 
 

 
oPerson.resident = "yes"; 
 

 
document.write(oPerson);
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Exercise - Personal Info</title> 
 
    <script src="practice9JS.js" type="text/javascript"></script> 
 
</head> 
 

 
<body> 
 
</body> 
 

 
</html>

+2

votre code fonctionne – sheplu

+0

Il a besoin d'afficher le contenu de l'objet dans son ensemble ainsi – Dale

+1

donc ce qui était tout le discours sur 'Impossible d'exécuter « écriture » sur « Document''? Le problème est-il une erreur ou une sortie incorrecte? Et par incorrect, je veux dire "pas ce que vous attendiez" parce que ce qui est imprimé est correct pour le code que vous avez écrit. – csmckelvey

Répondre

1

Votre document.write() sont exectuting comme HTML est en cours de lecture. Au moment où le DOM se charge, vos messages ne sont plus visibles. Essayez ceci:

setTimeout(() => document.write(oPerson.lastName), 1000); 
+0

Cela fonctionne en l'affichant sur la console mais en essayant de l'afficher sur le site – Dale

+0

@Dale bien si vous le pouvez ' t ajuster cela, que faites-vous la programmation? –

+0

Son juste un exercice de classe, lors de l'affichage d'un objet, à ces fins, il doit être sur l'écran. Sinon, je voudrais – Dale

0

Il est conseillé de ne pas utiliser document.write, becasue-il à exécuter avant de charger la page. En outre, il est exécuté dans l'emplacement HTML exactement où a été ajouté. Donc, dans le cas de votre code, il sera ajouté à head de la page, pas le body. If you wish to just add something to HTML, you can do it with document.appendChild`. Lorsque vous créez un nouvel élément, fournissez les informations nécessaires et ajoutez-les au corps.

par exemple. https://codepen.io/msamsel/pen/zEMZXX?editors=1010

function printToBody(str) { 
    var par = document.createElement('p'); 
    par.innerText = str; 
    document.getElementsByTagName('body')[0].appendChild(par); 
} 

var oPerson = { 
    firstName: 'John', 
    lastName: 'Travis', 
    age: 22 
} 

printToBody(oPerson.firstName) 
printToBody(oPerson.lastName) 
printToBody(oPerson.age) 

Si vous voulez vraiment utiliser écriture de documents, puis déplacez le script de la tête au corps. Alors document.write devrait s'exécuter là.

0

Je ne suis pas sûr de ce que vous essayez de faire, mais si tout simplement afficher le contenu de l'objet sans aucun formatage, cela pourrait fonctionner pour vous.

var oPerson = { 
 
    firstName: 'John', 
 
    lastName: 'Travis', 
 
    gender: 'Male', 
 
    age: 22, 
 
    district: 'Northshore', 
 
    hairColor: 'Brown', 
 
    hairLength: 'Short', 
 
    height: '6\'11"', 
 
    weight: '74kg', 
 
    martialStatus: 'Engaged' 
 
} 
 
var app = document.getElementById('app'); 
 
app.innerHTML = JSON.stringify(oPerson);
<div id="app"> 
 
</div>

+0

Assez bon haha. Je ne veux pas les marques de discours et les accolades mais c'est ok – Dale