javascript createElement(), le style de problème
aujourd'hui, j'ai écrit cette fonction:
function zoom(obj){
var img = (!document.getElementById(obj))?false:document.getElementById(obj);
var fullImage = (img.getAttribute("image") == null)?false:img.getAttribute("image");
if(!fullImage || !img) { return false; }
if(!document.getElementById("::img")) {
var ob = "<div id='::img' style='position:absolute;top:300px;left:300px;width:200px;height:200px;-moz-border-radius:100px;border:1px solid #ddd;-moz-box-shadow: 0px 0px 8px #fff;display:none;'></div>";
document.write(ob);}
img.onmousemove = function(e) {
var x = Math.floor(((e.pageX-7) - (img.offsetLeft - 8)) * 100 / img.width);
var y = Math.floor(((e.pageY-7) - (img.offsetTop - 8)) * 100 / img.height);
x = (x>100)?100:(x<0)?0:x;
y = (y>100)?100:(y<0)?0:y;
var ob = document.getElementById("::img");
ob.style.background = "url('" + fullImage + "') no-repeat";
ob.style.display = 'block';
ob.style.backgroundPosition = x + '% ' + y + '%';
ob.style.left = e.pageX + "px";
ob.style.top = e.pageY + "px";
}
img.onmouseout = function() { document.getElementById("::img").style.display='none'; }
}
-
J'ai essayé d'utiliser createElement() et appendChild() fonctions au lieu de cela :
var ob = `""`; document.write(ob);
mais la fonction ne fonctionne pas, comment faire pour qu'il fonctionne avec createElement().
-
est-il possible d'ajouter tout en style avec une ligne de code avec de la pure JAVASCRIPT :
ob.style.background = "url('" + fullImage + "') no-repeat";
ob.style.display = 'block';
ob.style.backgroundPosition = x + '% ' + y + '%';
ob.style.left = e.pageX + "px";
ob.style.top = e.pageY + "px";
Aperçu: JsFiddle
Vous devez vous connecter pour publier un commentaire.
Fonctionne très bien:
Vous pouvez également voir comment mettre le CSS dans un seul coup (en utilisant
element.style.cssText
).Je vous suggère d'utiliser un peu plus de sens des noms de variables et de ne pas utiliser le même nom pour les différents éléments. On dirait que vous êtes en utilisant
obj
pour les différents éléments (en écrasant la valeur de la fonction) et cela peut être source de confusion.Ou vous pourriez écrire l'élément HTML pur et l'utilisation
.innerHTML = [raw html code]
... c'est très laid si.En réponse à votre première question, utilisez d'abord
var myElement = createElement(...);
, alors vous nedocument.body.appendChild(myElement);
.appendChild
?appendElement
n'existe pas...yourElement.style.cssText
.Vous devez appeler la
appendChild
fonction pour ajouter votre nouvel élément à un élément existant dans les DOM.D'autres vous ont donné la réponse sur appendChild.
Appel
document.write()
sur une page qui n'est pas ouvert (par exemple a la fin du chargement) premiers appelsdocument.open()
qui efface tout le contenu du document (y compris le script appelant document.d'écriture), il est donc rarement une bonne idée de le faire.J'ai trouvé cette page quand j'ai essayé de définir la
backgroundImage
attribut d'une balise div, mais qu'il n'était pas emballé à l'backgroundImage
valeur avecurl()
. Cela a bien fonctionné: