Это уже так далеко, что я подведу итог тому, что мы узнали:
Внутри обработчика событий атрибут src не может быть прочитан в IE8 (FF работает нормально), ни с jQuery, ни с обычным javascript
Единственный способ получить данные - это получить их вне обработчика, записать их в массив и затем прочитать изнутри обработчика
Но все еще не было возможности записи в src (ни jQuery, ни javascript не работали - только для IE 8)
Я получил его, написав самим иммигрантам документ, но причина этой проблемы не решена
Фрагмент, который мы имеем, используется дважды.
Старый код
<script type="text/javascript">
jQuery(document).ready(function() {
//...
//view entry
jQuery('.blogentry').live('click',function(){
// Get contents
blogtext = jQuery(this).children('.blogtext').html();
blogauthor = jQuery(this).children('.onlyblogauthor').html();
blogtitle = jQuery(this).children('.blogtitle').html();
profileimage = jQuery(this).children('.profileimage').html();
imgleft = jQuery(this).children('.Image_left').attr('src');
imgcenter = jQuery(this).children('.Image_center').attr('src');
imgright = jQuery(this).children('.Image_right').attr('src');
// Write contents
jQuery('#bild_left').attr('src', imgleft);
jQuery('#bild_center').attr('src', imgcenter);
jQuery('#bild_right').attr('src', imgright);
jQuery('.person').attr('src', profileimage);
jQuery('#g_fb_name').html(blogauthor);
jQuery('#g_titel').html(blogtitle);
jQuery('#g_text').html(blogtext);
//...
});
//...
// Change entry
jQuery('.blogentry').each(function(){
entryindex = jQuery(this).attr('rel');
if (entry == entryindex)
{
// The following works fine (so 'children' works fine):
blogtext = jQuery(this).children('.blogtext').html();
blogauthor = jQuery(this).children('.onlyblogauthor').html();
blogtitle = jQuery(this).children('.blogtitle').html();
profileimage = jQuery(this).children('.profileimage').html();
// This does not work - only in IE 8, works in Firefox
imgleft = jQuery(this).children('.Image_left').attr('src');
imgcenter = jQuery(this).children('.Image_center').attr('src');
imgright = jQuery(this).children('.Image_right').attr('src');
//alert: 'undefined'
alert(jQuery(this).children('.Image_center').attr('src'));
//...
}
}
//...
});
</script>
Новый код
Пожалуйста, смотрите мой собственный ответ для нового кода.
UPDATE:
Это не работает, если вызывается внутри события click !!!
jQuery('.Image_left').each(function(){
alert(jQuery(this).attr('src'));
});
РЕШЕНИЕ ПОЛУЧЕНИЯ ДАННЫХ ИЗОБРАЖЕНИЯ:
relcounter = 1;
imgleft_array = new Array();
jQuery('.Image_left').each(function(){
imgleft_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgcenter_array = new Array();
jQuery('.Image_center').each(function(){
imgcenter_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
relcounter = 1;
imgright_array = new Array();
jQuery('.Image_right').each(function(){
imgright_array[relcounter] = jQuery(this).attr('src');
relcounter++;
});
//... inside the eventhandler (entryindex = 'rel' of blogentry):
imgleft = imgleft_array[entryindex];
imgcenter = imgcenter_array[entryindex];
imgright = imgright_array[entryindex];
Это работает, потому что он не вызывается внутри обработчика событий, а источники сохраняются заранее
НО! Я до сих пор не могу записать данные, что является моей целью:
jQuery('#bild_left').attr('src', imgleft);
jQuery('#bild_center').attr('src', imgcenter);
jQuery('#bild_right').attr('src', imgright);
UPDATE !!!
Это просто безумие, я пытался записать данные с помощью обычного JavaScript. Это также работает в FF, но не в IE8. Вот действительно серьезная проблема с атрибутом src:
document.getElementById('bild_left').src = imgleft;
document.getElementById('bild_center').src = imgcenter;
document.getElementById('bild_right').src = imgright;
alert(document.getElementById('bild_left').src);
Это работает в FF, но не в IE8, атрибут src остается неопределенным после записи! Кажется, это не проблема jQuery!