Javascript set img src


96

Muhtemelen basit bir şeyi kaçırıyorum ama okuduğunuz her şeyin işe yaramaması oldukça sinir bozucu. Dinamik olarak oluşturulmuş bir sayfa boyunca birçok kez kopyalanabilen resimlerim var. Yani yapılacak en bariz şey, onu önceden yüklemek ve bu değişkeni her zaman kaynak olarak kullanmaktır.

var searchPic;
function LoadImages() {
    searchPic = new Image(100,100);
    searchPic.src = "XXXX/YYYY/search.png";
    // This is correct and the path is correct
}

sonra görüntüyü kullanarak

  document["pic1"].src = searchPic;

veya

  $("#pic1").attr("src", searchPic);

Ben olsun görüntüyü sorguladığınızda Ancak resim FireBug düzgün ayarlanmış asla [object HTMLImageElement]olarak srcgörüntünün

IE'de şunları alırım:

http://localhost:8080/work/Sandbox/jpmetrix/[object]

Yanıtlar:


97

Src'yi şunu kullanarak ayarlamalısınız:

document["pic1"].src = searchPic.src;

veya

$("#pic1").attr("src", searchPic.src);

59

imgEtiket oluşturmak ve add attributesmanuel olarak yapmak için saf JavaScript ,

var image = document.createElement("img");
var imageParent = document.getElementById("body");
image.id = "id";
image.className = "class";
image.src = searchPic.src;            // image.src = "IMAGE URL/PATH"
imageParent.appendChild(image);

Src'yi ayarlayın pic1

document["#pic1"].src = searchPic.src;

veya getElementById ile

document.getElementById("pic1").src= searchPic.src;

j-Bunu arşivlemek için sorgu,

$("#pic1").attr("src", searchPic.src);

6
document.getElementById ("pic1") # olmadan
Gianluca Demarinis

6

Görüntü oluşturucunun örneklerinin herhangi bir yerde kullanılması amaçlanmamıştır. Basitçe src, ve görüntü önyüklerini ayarlayın ... ve işte bu, gösteri bitti. Nesneyi atabilir ve devam edebilirsiniz.

document["pic1"].src = "XXXX/YYYY/search.png"; 

yapmanız gereken şey. Hala görüntü yapıcı kullanın ve ikinci eylemi gerçekleştirebilir onload, aramalarınızdan işleyicisi searchPic. Bu src, gerçek imgnesneyi ayarlamadan önce görüntünün yüklenmesini sağlar .

Şöyle:

function LoadImages() {
    searchPic = new Image();
    searchPic.onload=function () {
        document["pic1"].src = "XXXX/YYYY/search.png";
    }
    searchPic.src = "XXXX/YYYY/search.png"; // This is correct and the path is correct
}

src'yi onload () içinde ayarlarsanız, sunucuyu kıran sonsuz bir döngü elde edersiniz, yani src yüklendiğinde onload'ı çağırır.
David Newcomb

Bir yükleme olayı yalnızca bir kez tetiklenebileceği için ters giden başka bir şey var. Kaynağı aynı görüntüye ayarlayarak tekrar ateşlenmesini sağlayamazsınız.
Breton

1
Haklısınız, "XXXX / YYYY / search.png" bir web kamerası resmi veya sunucu tarafında değişen bir şey olduğunda garip önbelleğe alma sorunlarından bahseden başka SO makaleleri var. Bağlantıyı "XXXX / YYYY / search.png? T = <thedate>" olarak değiştirmemizi önerdiler. Çözümünüz en güzel ve temizdi, bu yüzden ikisini birleştirdim ve sunucuyu etkiledi.
David Newcomb

@DavidNewcomb Yikes! bu aldatıcı bir şey. Bu durumda, yeni Image () bölümünü terk edeceğimi ve bunun yerine çift arabellek gibi iki gerçek dom görüntüsüne sahip olacağımı düşünüyorum. image1'i gizle, image2'yi gizle. aralıklı zamanlayıcıda: image1'de src'yi ve image1.onload'da 1'i göster, gizle 2.'yi ayarlayın. Aralık patlamaları: image2'de src'yi ayarlayın. image2.onload içinde, 2 göster, 1. gizle, bekle, aralık ateşlemeleri: image1 üzerinde src'yi ayarlayın. image1.onload, show 1, hide 2- etc ...
Breton

5

Ayrıca, bunu çözmenin bir yolu document.createElement, html img'nizi kullanmak ve oluşturmak ve özniteliklerini bu şekilde ayarlamaktır.

var image = document.createElement("img");
var imageParent = document.getElementById("Id of HTML element to append the img");
image.id = "Id";
image.className = "class";
image.src = searchPic.src;
imageParent.appendChild(image);

HATIRLATMA : Bir nokta JavaScript toplulukta şu anda gibi kullanım belge seçicileri teşvik eder ki querySelector, getElementByIdve getElementsByClassNameyerine belge daha [ "Pic1"].



1

Tamamen yeni bir görüntü oluşturmanıza gerek yok ... src özelliği yalnızca bir dize değeri alır :-)


1
Sayfa dinamik olarak javascript kullanılarak oluşturulmuşsa, sayfa yüklendiğinde indirilen görüntünün olmasını istersiniz, böylece ilk kez ihtiyaç duyan bir öğe oluşturduğunuzda can sıkıcı bir gecikme yaşamazsınız. Görüntü nesnesini yaratmanın nedeni budur.
tvanfosson

Haklısın, cevabımda çok kesin değildim. Ben sadece src özniteliğinin bir dizge aldığını Imageve önceden on oluşturmanın önbelleğe alma avantajını tamamen unuttuğunu söylemek istedim . Teşekkürler!
JorenB

0

Ayarlaman gerekiyor

document["pic1"].src = searchPic.src;

SearchPic'in kendisi Resminizdir (), ayarladığınız src'yi okumanız gerekir.


0

Src mülkünüz bir nesnedir çünkü src öğesini JavaScript'te oluşturduğunuz görüntünün tamamı olacak şekilde ayarlıyorsunuz.

Deneyin

document["pic1"].src = searchPic.src;

0

Vaov! kullandığınızda srcdaha sonra srcbir searchPicde kullanılmalıdır.

document["pic1"].src = searchPic.src

daha iyi görünüyor


0

WinJS kullanıyorsanız src, Utilitiesişlevler aracılığıyla değiştirebilirsiniz .

WinJS.Utilities.id("pic1").setAttribute("src", searchPic.src);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.