ポストバック時に.NET ASPXページでjQueryを使用してイメージのsrcを変更しようとしています。ASP.NETのポストバック中にforループでJquery attr()を使用して要素属性を設定できません
コードは、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前にここで
は単純化されたコードサンプルです個[4] attr src after https://d1ululg65bfe3q.cloudfront.net/images/icon/rating-stars-gray-36x54.png
星[0]未定義
星の前にATTR srcが[0]のattr SRC未定義
後に目的が動的<img>
要素にsrc
属性を割り当てることです。
更新
次スーパーシンプルなコードもundefined
をyeilds。 forループと配列はありません。
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'));
}
が、これはあなたのために働くかもしれないようにコンソール出力
それは基本的にこの '$($( '#のstar1-UUID'))'であるので、これはundefined' 'になります。 –
拡張コンソール出力が追加されました。 –