Получить родную высоту изображения с помощью jquery - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь создать функцию, которая использует jQuery для получения высоты изображения, я перепробовал все, что смог найти, но ничего не работает ...

$(document).ready(function() {
window.onload = onLoad;

var array = "0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107".split("|");

function onLoad(){

    $("style").html("");

    var img = array[Math.floor(Math.random()*array.length)] + ".JPG";

    document.getElementById("show").src = img;

    var img_height = $("#show").height();

    var img_hgt = img_height - 238;

    alert(img_hgt);

    $("#show").ready(function() {
        var img_hgt = $("#show").height();
    })

    $("style").html("#show {position:absolute;top:0px;left:0px; -webkit-animation-name:slide_animation; -webkit-animation-duration:5s;} @-webkit-keyframes slide_animation { 0% { top:0px; } 100% { top:"+img_hgt+"px; } }");
    setTimeout(onLoad,2*1000);
}
});

Пожалуйста, помогите ...

То, что я пытаюсь достичь с помощью этой анимации, это своего рода эффект скольжения кен-ожогов ...

Ответы [ 4 ]

6 голосов
/ 18 января 2012

Попробуйте это

var myImg = new Image();
myImg.src = img;
myImage.onload = function() {
    alert(this.width);
};
0 голосов
/ 18 января 2012

вот как я это сделал:

HTML

<img id="show" src="" />

CSS

#show {
    position:absolute;
    top:0px;
    left:0px;
}

JS

//generate array from 0 to 107
var myArray = [];
for (i = 0; i <= 107; i++) {
    myArray.push(i);
}

//look at our array in string form! (comma separated due to  .toString());
alert(myArray.toString());

function loadImages() {

    //url randomizer
    var img = myArray[Math.floor(Math.random() * myArray.length)] + ".JPG";

    //get reference to our HTML "show"
    var show = $('#show');

    //new image
    var myImg = new Image();

    //bind onload to image object
    myImg.onload = function() {

        //check if we got the height
        alert(this.height);

        //animation here. use jQuery .animate() instead!
        //http://api.jquery.com/animate/

        //recurse (loop)
        setTimeout(loadImages, 2 * 1000);
    };

    //set url
    //here's why it should be set after the onload bind
    //http://www.thefutureoftheweb.com/blog/image-onload-isnt-being-called
    myImg.src=img;
}

//wait for document to load
$(document).ready(function() {
    loadImages();
});
0 голосов
/ 18 января 2012

Btw. это

array = "0|1|2|..."

НЕ является массивом. Это строка. Если вы попытаетесь получить случайную запись этой строки с вашим кодом, вы получите разделитель "|" иногда.

Попробуйте вместо этого

array = [0,1,2,3,4, ...];

РЕДАКТИРОВАТЬ: Все в порядке с вашей реализацией относительно массива. Я пропустил split('|') в конце строки

array = "0|1|2|...". split('|');
0 голосов
/ 18 января 2012

Это, кажется, работает нормально:

http://jsfiddle.net/YVwZZ/

$(document).ready(function(){
   var imgheight = $('img').height();
   alert(imgheight);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...