2017-06-06 15 views
1

Je suis nouveau sur JavaScript et je ne comprends pas pourquoi mon code HTML ne change pas?Impossible de modifier InnerHTML de la classe d'étendue?

J'ai un Iframe et j'essaye de changer le .innerHTML de la classe d'envergure que l'Iframe a créé dans le DOM.

Dans la structure DOM, la classe est appelée <span class="weather-location">China</span>

Je suis juste essayer d'y accéder en changeant est innerHTML à Taiwan à la place.

voici mon code:

<html> 
<head> 
<title>test</title> 
</head> 
<body onload="myFunction()"> 

<iframe class="weather" width="100%" height="600px" frameBorder="0" 
src="(this is my iframe src code)></iframe> 

<script type="text/javascript"> 
    function myFunction() { 
     document.getElementsByClassName("weather-location")[0].innerHTML = "Taiwan"; 
    } 
</script> 
</body> 
</html> 

Quand je teste dans le journal de la console, il apporte que weather-location comme [] mais ce qui est aussi est bizarre quand j'utiliser l'outil de sélection pour le vol stationnaire sur cette classe weather-location et revenir en arrière et re-taper le code dans la console, il change la classe comment je voulais?

En outre, je ne sais pas si cela aide, mais quand il apparaît comme [] en chrome un peu i boîte apparaît disant "la valeur ci-dessous a été évaluée tout à l'heure".

+1

Voir https://stackoverflow.com/ questions/478078/access-a-form-that-is-in-a-iframe - un cadre a son propre 'document'. –

+0

Imaginez ceci. J'appelle une page bancaire dans la mienne, via iframe, full page. Que je fais le tour et change des éléments dans ce iframe :) imaginez juste. Amusant à part, c'est faisable si vous avez un accès * API * à cette iframe ou si c'est en fait à partir de votre propre domaine ... –

+0

Vous devez avoir le script dans le cadre. –

Répondre

2

Vous ne pouvez pas modifier innerHTML des iframes s'il s'agit d'un autre domaine sur .

https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe

Ce genre de iframe est comme une fenêtre sur une autre page Web que vous avez aucun contrôle.

Si elle est sur le même domaine vous pouvez utiliser quelque chose comme

var ifr = document.getElementById(yourIframeId); 
var ifrDoc = ifr.contentDocument || ifr.contentWindow.document; 
var theForm = ifrDoc.getElementById(yourFormId); 

SO Question: accessing a form that is in an iframe

Crédit: @le_m