Похоже, что эта функция JavaScript пытается ссылаться на свойства веб-элемента управления ASP.NET, которые недоступны со стороны клиента. Однако вы можете ссылаться на объекты HTML, которые выводятся на страницу через ASP.NET, вместе с их атрибутами.
Предполагая, что ваш код JavaScript является кодом в коде .ascx, измените эту строку:
var images = document.getElementById("GetQuote").getAttribute("ImageUrl");
К этому:
var images = document.getElementById('<%=GetQuote.ClientID%>').getAttribute("src");
Для этого нужно вставить идентификатор клиента, который ASP.NET создает для элемента управления GetQuote Image
, чтобы на него можно было ссылаться со стороны клиента. Он также ссылается на правильный атрибут элемента HTML img
(src
), который соответствует свойству ImageUrl
серверного элемента управления Image
.
EDIT:
Я заметил, увидев ответ TheVillageIdiot (и прочитав ваш код немного более внимательно, что я должен был сделать изначально), вы пытаетесь использовать переменную images
в качестве массива. Возможно, вы пытаетесь сопоставить несколько элементов изображения, которые содержат текст «GetQuote» в своих идентификаторах (например, GetQuote1, GetQuote2 и т. Д.).
Предполагая, что вам нужно сделать это на стороне клиента, и что вы не используете фреймворк, такой как jQuery, попробуйте это:
window.onload = function()
{
// get all img elements on the page and load them into an array
var images = document.getElementsByTagName("img");
// iterate through the image array
for (var i = 0; i < images.length; i++)
{
// check that the current image's id contains "GetQuote" (case sensitive)
if (images[i].id.indexOf("GetQuote") >= 0)
{
var image_png_src = images[i].src;
var image_gif_src = image_png_src.replace(".png", ".gif");
images[i].src = image_gif_src;
}
}
};