我試圖在回發期間在.NET ASPX頁面上使用jQuery更改圖像的src。在ASP.NET回發期間使用Jquery attr()設置元素屬性在for循環中失敗
只要不在prm.add_endRequest(function() {});
之外,代碼在頁面加載時效果很好。但是,一旦發生回發並運行prm.add_endRequest(function() {});
,它就會導致attr未定義。
下面是一個簡化的代碼示例:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function() {
var defaultImage = '<%=DefaultImage %>';
function initializeStars() {
var star1 = $('#star1<%=uuid %>');
var star2 = $('#star2<%=uuid %>');
var star3 = $('#star3<%=uuid %>');
var star4 = $('#star4<%=uuid %>');
var star5 = $('#star5<%=uuid %>');
var stars = new Array(star1, star2, star3, star4, star5);
console.log('stars', stars);
for (var i = 0; i < stars.length; i++) {
console.log('stars[', i, '] before', stars[i]);
console.log('stars[', i, '] attr src before', stars[i].attr('src'));
console.log('defaultImage', defaultImage);
stars[i].attr('src', defaultImage); // Assign defaults.
stars[i].css('font-size', '0px');
console.log('stars[', i, '] after', stars[i]);
console.log('stars[', i, '] attr src', stars[i].attr('src'));
}
}
initializeStars();
});
可以在控制檯輸出請參見:
分[4] ATTR SRC之前
stars [4] attr src after https://d1ululg65bfe3q.cloudfront.net/images/icon/rating-stars-gray-36x54.png
分[0] ATTR SRC之前未定義
分[0] ATTR SRC後未定義
目的是動態地分配一個src
屬性到<img>
元件。
更新
以下超級簡單的代碼也yeilds undefined
。沒有for-loop和沒有數組。
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function() {
var defaultImage = '<%=DefaultImage %>';
var star1 = $('#star1<%=uuid %>');
console.log('PRM CASE');
console.log('star1', star1);
console.log('star1 before', star1);
console.log('star1 attr src before', star1.attr('src'));
console.log('defaultImage', defaultImage);
star1.attr('src', defaultImage); // Assign defaults.
console.log('star1 after', star1);
console.log('star1 attr src after', star1.attr('src'));
}
擴展控制檯輸出
這導致'undefined',因爲它基本上是這樣'$($( '#STAR1的UUID'))'。 –
已添加擴展的控制檯輸出。 –