J'ai cette fonction pour copier des valeurs d'une fenêtre à l'autre qui fonctionne dans un sens, mais pas dans un autre ...
Script de travail:
$(document).ready(function(e) {
$('#clickit').live({
click: function() {
window.opener.document.forms['orderForm']['service'].value = document.forms['GroundRates']['service'].value;
window.opener.document.forms['orderForm']['rate'].value = document.forms['GroundRates']['rate'].value;
self.close();
return false;
}
});
});
Maintenant, sur cet autre script, qu'est-ce que j'ai fait de mal? Je tire mes cheveux ici.
Ca ne fonctionne pas:
$(document).ready(function(e) {
$('#clickit').live({
click: function() {
var thisservice = document.forms['GroundRates']['service'].value;
var thisrate = document.forms['GroundRates']['rate'].value;
var thatservice = window.opener.document.forms['orderForm']['service'].value;
var thatrate = window.opener.document.forms['orderForm']['rate'].value;
$(thatrate) = $(thisrate);
$(thatservice) = $(thisservice);
self.close();
return false;
}
});
});
J'ai aussi essayé ..
$(thatrate).val() = $(thisrate).val();
$(thatservice).val() = $(thisservice).val();
Et..
thatrate = thisrate;
thatservice = thisservice;
Mais cela fonctionne:
var service = document.forms['GroundRates']['service'].value;
var rate = document.forms['GroundRates']['rate'].value;
window.opener.document.forms['orderForm']['service'].value = service;
window.opener.document.forms['orderForm']['rate'].value = rate;
Suis-je pas attribuer la var correctement pour le window.opener
?
4 réponses
var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];
thatrate.value = thatservice.value;
thatservice.value = thisservice.value;
Ou si vous souhaitez encapsuler les objets DOM avec un objet jQuery.
var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];
$(thatrate).val( $(thatservice).val() );
$(thatservice).val( $(thisservice).val() );
Essayer:
var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];
thatrate.val(thisrate.val());
thatservice.val(thisservice.val());
Votre console vous dira: ReferenceError: Invalid left-hand side in assignment
$(thatrate) = $(thisrate);
$(thatservice) = $(thisservice);
Vous devez le faire comme ceci:
var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];
thatrate.value = thisrate.value
thatservice.value = thisservice.value;
Vous utilisez abusivement .val ()
$(thatrate).val($(thisrate).val());
$(thatservice).val($(thisservice).val());
La nouvelle valeur est placée entre parenthèses.
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.