我试图在回发期间使用.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();
});
您可以在控制台输出中看到以下内容:
明星[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'));
}
扩展控制台输出
答案 0 :(得分:0)
似乎这可能适合你。你能试试这种方法吗?
console.log('stars[', i, '] attr src before', $(stars[i]).attr('src'));
你能扩展一下吗?