SCRIPT5007: Impossible d'obtenir la propriété "valeur" undefined ou référence null
J'ai un formulaire html qui ne semble pas être fonctionnel dans IE10. quand on clique sur le bouton go de débogage retourne:"SCRIPT5007: Impossible d'obtenir la propriété "valeur" undefined ou référence null"
J'ai ajouté cette balise dans ma page html
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />.
code html contient un menu déroulant de l'option pour la fréquence en myform.Après avoir sélectionné une option dans la liste déroulante, je fais appel ci-dessous fonction javascript.
function chooseFreqMenu(freqValues,freqTexts)
{
var cf = document.myform;
var freq1=document.myform.freq.value; //freq1="d"
alert(freq1);//displaying freq1 value is "d" (ex:selected 'd' in html dropdown)
//checking some condition for freqValues.
for(var i=4;i<freqValues.length;i++)
selectStr += '<option value="'+freqValues[i]+'">'+freqTexts[i]+'\n';
}
selectStr += '</select>';
//Assinging the selectedStr to innerHTML. After this statement i am getting empty for freq1 value.
//Its working fine in IE<10 browsers
document.all.freqSel.innerHTML = selectStr;
alert(freq1); //displaying freq1 value is empty.
}
Avant d'envoyer myform à chooseFreqmenu, myform contient freq value="d"(à supposer que j'ai sélectionné " d " dans la liste déroulante)
Après la fonction ci-dessus myform ne contient pas de freq valeur.
Après la fonction ci-dessus en passant myform à buildQueryStr.
function buildQueryStr(myform)
{
var freq=myform.freq.value; //Getting an error SCRIPT5007: Unable to get property 'value' of undefined or null reference in this line
//some other fields.
}
Comment résoudre ce problème?
Des suggestions?? Merci à l'Avance.
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que IE 10 prend en charge acessing éléments avec la myform.freq.valeur syntaxe plus.
Le niveau moyen de l'accès aux Éléments (ce qui est pris en charge dans tous les navigateurs, y compris IE) est la document.getElementById fonction
document.forms["myform"].elements["freq"]
qui est à l'aide de l'élément de noms.document.getElementById
.document.forms["myform"].elements["freq"]
s'appuie sur l'élément "freq" être à l'intérieur de la "myform", il présente les modifications, puis le code de pause alors quedocument.getElementById
ne sera pas...Première: vous ne devriez pas être à l'aide de
document.all
, pas en 2013 🙂 C'est une ancienne extension Microsoft et je pense que c'est obsolète. Utiliser getElementById.Je pense qu'il ya quelque chose de mal dans la façon dont vous créez votre selectStr. Tu vas l'utiliser comme innerHTML pour Sélectionner:
</select>
. La balise de fermeture pour un élément ne fait pas partie de ses innerHTML autant que je sache<option>
élémentsJe changerais le morceau de code suivant:
dans cette:
REMARQUE: j'ai lu quelque part qu'en utilisant innerHTML sur le choix des contrôles a une très dépendante du navigateur comportement, même en utilisant correctement mis en forme code. Je pense qu'une solution plus robuste serait à l'aide de removeChild et la méthode addChild à dinamically supprimer et ajouter des options de nœuds .
Problème est lié à la mode document , IE11 document par défaut est en mode IE7.
À l'aide de la touche F12 dans IE Émulation, vous pouvez changer de mode de document 8, 9 et 11
Vous pouvez utiliser la balise suivante pour changer le mode de document à l'aide de la programmation.
Pour les versions d'Internet Explorer 8 et ci-dessus, ce:
Force le navigateur à rendre que cette version particulière de normes. Il n'est pas pris en charge pour IE7 et ci-dessous.
Si vous vous séparez avec semi-colon, il définit des niveaux de compatibilité pour les différentes versions. Par exemple:
Rend IE7 et IE8 comme IE7, mais IE9 comme IE9. Elle permet différents niveaux de rétro-compatibilité. Dans la vraie vie, cependant, vous devez seulement choisir l'une des options:
Cela permet beaucoup plus facile de test et de maintenance. Bien que généralement le plus utile de la version de c'est à l'aide d'Émuler:
Pour cela:
Il force le navigateur le rendu à quelle que soit la version la plus récente de normes. Tout comme l'utilisation de la dernière version de jQuery sur Google CA, la plus récente, mais peut aussi potentiellement briser votre code puisque ce n'est pas une version fixe.
Dernier , envisager l'ajout de cette petite friandise:
L'ajout de "chrome=1" va permettre au site de s'afficher dans ChromeFrame pour ceux (intelligent) les utilisateurs qui l'ont, sans affecter quelqu'un d'autre.
`entrez le code ici
`https://technet.microsoft.com/en-us/itpro/internet-explorer/ie11-deploy-guide/fix-compat-issues-with-doc-modes-and-enterprise-mode-site-list