Javascript mengatur img src


96

Saya mungkin melewatkan sesuatu yang sederhana tetapi cukup mengganggu ketika semua yang Anda baca tidak berfungsi. Saya memiliki gambar yang dapat digandakan berkali-kali selama halaman yang dibuat secara dinamis. Jadi hal yang jelas harus dilakukan adalah memuatnya terlebih dahulu dan menggunakan satu variabel itu sebagai sumber sepanjang waktu.

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

lalu saya atur gambarnya menggunakan

  document["pic1"].src = searchPic;

atau

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

Namun, gambar tidak pernah disetel dengan benar di FireBug saat saya menanyakan gambar yang saya dapatkan [object HTMLImageElement]sebagai srcgambar

Di IE saya mendapatkan:

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

Jawaban:


96

Anda harus mengatur src menggunakan ini:

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

atau

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

58

JavaScript Murni untuk Membuat imgtag dan add attributessecara manual,

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);

Tetapkan src di pic1

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

atau dengan getElementById

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

j-Query untuk mengarsipkan ini,

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

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

6

Contoh konstruktor gambar tidak dimaksudkan untuk digunakan di mana pun. Anda cukup mengatur src, dan gambar dimuat sebelumnya ... dan hanya itu, pertunjukan selesai. Anda dapat membuang benda tersebut dan melanjutkan.

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

adalah apa yang seharusnya kamu lakukan. Anda masih dapat menggunakan konstruktor gambar, dan melakukan tindakan kedua di onloadpenangan file searchPic. Ini memastikan gambar dimuat sebelum Anda mengaturnya srcpada imgobjek nyata .

Seperti:

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
}

jika Anda menyetel src di onload () Anda mendapatkan loop tak terbatas yang mengganggu server, yaitu saat src dimuat, ia memanggil onload.
David Newcomb

ada hal lain yang tidak beres karena peristiwa pemuatan hanya dapat diaktifkan sekali. Anda tidak bisa mengaktifkannya lagi dengan menyetel sumber ke gambar yang sama.
Breton

1
Anda benar, ada artikel SO lain yang berbicara tentang masalah caching aneh ketika "XXXX / YYYY / search.png" adalah gambar webcam atau sesuatu yang berubah di sisi server. Mereka menyarankan agar kami mengubah tautan ke "XXXX / YYYY / search.png? T = <thedate>". Solusi Anda paling bagus dan terbersih, jadi saya menggabungkan keduanya dan itu menghancurkan server.
David Newcomb

@Dvidcom Astaga! itu yang rumit. Dalam hal ini, saya pikir saya akan membuang bagian Image () baru, dan sebagai gantinya memiliki dua gambar dom yang sebenarnya - seperti buffer ganda. sembunyikan gambar1, sembunyikan gambar2. dalam timer interval: setel src pada image1, dan di image1.onload, tampilkan 1, sembunyikan 2. Interval kebakaran: set src pada image2. di image2.onload, tampilkan 2, sembunyikan 1. tunggu, interval aktif: setel src pada image1. di image1.onload, tampilkan 1, sembunyikan 2- dll. dll ...
Breton

5

Juga, salah satu cara untuk mengatasinya adalah dengan menggunakan document.createElementdan membuat img html Anda dan mengatur atributnya seperti ini.

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);

KETERANGAN : Satu poin adalah komunitas Javascript saat ini mendorong pengembang untuk menggunakan pemilih dokumen seperti querySelector, getElementByIddan getElementsByClassNamedaripada dokumen ["pic1"].



1

Anda tidak perlu membuat gambar yang benar-benar baru ... atribut src hanya menggunakan nilai string :-)


1
Jika halaman dibuat secara dinamis menggunakan javascript, Anda pasti ingin gambar diunduh saat halaman dimuat sehingga Anda tidak mendapatkan penundaan yang mengganggu saat pertama kali Anda membuat elemen yang membutuhkannya. Itulah alasan untuk membuat objek Image.
tvanfosson

Anda benar, saya tidak terlalu tepat dalam menjawab saya. Saya hanya bermaksud mengatakan bahwa atribut src mengambil string, dan sama sekali lupa tentang keuntungan caching dari pembuatan Imageon sebelumnya. Terima kasih!
JorenB

0

Anda perlu mengatur

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

SearchPic itu sendiri adalah Image Anda (), Anda perlu membaca src yang Anda setel.


0

Properti src Anda adalah sebuah objek karena Anda menyetel elemen src menjadi keseluruhan gambar yang Anda buat di JavaScript.

Mencoba

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

0

Wow! Bila Anda menggunakan srcmaka srcdari searchPicharus digunakan juga.

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

Terlihat lebih baik


0

Jika Anda menggunakan WinJS, Anda dapat mengubah srcmelalui Utilitiesfungsi.

WinJS.Utilities.id("pic1").setAttribute("src", searchPic.src);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.