在ASP.NET Postback

时间:2017-08-16 17:28:53

标签: javascript c# jquery asp.net

我试图在回发期间使用.NET ASPX页面上的jQuery更改图像的src。

只要代码在prm.add_endRequest(function () {});之外,代码就可以在页面加载时完美运行。但是,一旦发生回发并且prm.add_endRequest(function () {});运行,它就会给attr undefined。

这是一个简化的代码示例:

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之前

     在https://d1ululg65bfe3q.cloudfront.net/images/icon/rating-stars-gray-36x54.png

之后

明星[4] attr src      在未定义之前

stars [0] attr src

     未定义

之后

stars [0] attr src

目标是动态地将src属性分配给<img>元素。

更新

以下超级简单代码也是undefined。没有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

1 个答案:

答案 0 :(得分:0)

似乎这可能适合你。你能试试这种方法吗?

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

你能扩展一下吗?

This console log