2017-08-16 4 views
0

ポストバック時に.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(); 
    }); 

コンソール出力: enter image description here

あなたは、次のコンソール出力で見ることができます:

星[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')); 
} 

が、これはあなたのために働くかもしれないようにコンソール出力

enter image description here

答えて

0

はそう拡大しました。このアプローチを試してみてください。

console.log('stars[', i, '] attr src before', $(stars[i]).attr('src'));

そして、あなたはこれを拡張することができますか?

This console log

+0

それは基本的にこの '$($( '#のstar1-UUID'))'であるので、これはundefined' 'になります。 –

+0

拡張コンソール出力が追加されました。 –

関連する問題