image naturalWidth return zero
Here is the FINAL WORKING CODE... in case somebody wants to know. It's all a matter of waiting until the images have loaded!
<script type="text/javascript">
$(function() {
$("#thumb").jCarouselLite({
btnNext: "#down",
btnPrev: "#up",
vertical: true,
visible: 4
});
$("#thumb li img").click(function() {
var newlinkimage = $(this).attr("src");
newlinkimage = 'retouche-hr' + newlinkimage.substring(14,17);
$('#hr').remove();
var newimage = new Image();
newimage.src = newlinkimage + '-a.jpg';
newimage.onload = function()
{
var width = (newimage.width);
var height = (newimage.height);
$('#contentfull').append('<div id="hr"> </div>');
$("#hr").attr("width", width).attr("height", height);
$("#hr").addClass('hrviewer');
//alert('a');
$("#hr").append('<div id="avant"> <img alt="before" src="' + newlinkimage +'-a.jpg"></div>');
$("#hr").append('<div id="apres"> <img alt="after" src="' + newlinkimage +'-b.jpg"></div>');
//alert('b');
$("#avant img").attr("src", newlinkimage + '-a.jpg').attr("width", width).attr("height", height);
$("#apres img").attr("src", newlinkimage + '-b.jpg').attr("width", width).attr("height", height);
$("#apres img").load(function(){$("#hr").beforeAfter({animateIntro:true});});
}
})
});
</script>
I'd guess it's because you're not waiting for the image to load - try this:
var newimage = new Image();
newimage.src = 'retouche-hr' + newlinkimage.substring(14,17) + '-a.jpg';
newimage.onload = function()
{
var width = this.naturalWidth;
alert(width);
}