Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] szerokosc i wysokosc IMG
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
blokern
czesc, mam obrazek na stronie <img src="plik.jpg"> bez okreslonej widht= oraz height=.
w jaki sposob moge wyciagnac informacje na temat szerokosci i wysokosci obrazka w chrome (w ff dziala) bo opcja document.getElementById("fotka").height; i document.getElementById("focia").width; to odpada questionmark.gif?
dzieki za odpowiedz
Łukasz
kamil4u
offsetWidth
blokern
offsetWidth bedzie dzialac jezeli w <img src=""> jest width="".
Twoje rozwiazanie w chromie nie dziala

<img src="abc.jpg" id="focia">

var intElemOffsetWidth = document.getElementById('focia').offsetWidth;
document.write(""+intElemOffsetWidth+"")

wynik w chrome = 0

kamil4u
Odczytaj w takim razie wymiar obrazka w zdarzeniu onload. Chrome pewnie może odczytać wymiar, gdy obraz jest załadowany. Spróbuj dwoma metodami.
blokern
dzieki za wskazowke

poczynilem

var image = new Image();
image.onload = function() {
// always called
alert(""+image.width+"");
var fiu = image.width;
document.write(""+image.width+"");
};
image.src = 'abc.jpg';

wiesz moze czemu wyswietla sie alert a nastepnie przeladowuje sie strona i wyskakuje wartosc szerokosci ?
chcialbym przekazac wartosc fiu i podac dalej
kamil4u
Strona nie powinna się przeładowywać...
Opisz problem trochę dokładniej...

W chrome trzeba dać onload, bo z tego co czytałem to szerokość ustalana jest w tej przeglądarce dopiero po wczytaniu obrazka, a nie DOM-u.
erix
Cytat
wiesz moze czemu wyswietla sie alert a nastepnie przeladowuje sie strona i wyskakuje wartosc szerokosci ?

Bo używasz document.write podczas, gdy dokument jest już zrenderowany. Zdarzenie onload jest wyzwalane asynchronicznie.
blokern
  1.  
  2. </head>
  3.  
  4. <div id="box">
  5. <img src="abc.jpg" alt="tresc">
  6. </div>
  7.  
  8. <script type="text/javascript">
  9. if (document.images) { //sprawdzamy czy przeglądarka obsługuje obiekty images
  10.  
  11. els = document.getElementById('box').getElementsByTagName('img');
  12. for( i=0; el = els[i++];){
  13. if( el.width >=450 && el.height >=150 ){
  14. var ok=1;}
  15. }
  16. </body>
  17. </html>


w FF dziala w chrome nie smile.gif jezeli wstawie taki skrypt

[html]
var image = new Image();
image.onload = function() {
// always called
alert(""+image.width+"");
var fiu = image.width;
document.write(""+image.width+"");
};
image.src = 'abc.jpg';
[html]

no to wyskoczy mi alert potem przeladuje strone i wyrzuci szerokosc a tak naprawde to ja ta szerokosc chce gdzies podac dalej

pozdrawiam
Łukasz
kamil4u
  1. </head>
  2.  
  3. <div id="box">
  4. <img src="abc.jpg" alt="tresc">
  5. </div>
  6.  
  7. <script type="text/javascript">
  8. onload = function(){
  9.  
  10. els = document.getElementById('box').getElementsByTagName('img');
  11. for( i=0; el = els[i++];){
  12. //tu el.width powinno działać wszędzie <-------------------------------------
  13. if( el.width >=450 && el.height >=150 ){
  14. //....
  15. } else {
  16. //....
  17. }
  18. }
  19. }
  20. </script>
  21. </body>
  22. </html>
blokern
  1.  
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6.  
  7. <div id="box">
  8. <img src="http://www.google.pl/logos/classicplus.png" alt="tresc">
  9. </div>
  10.  
  11. <script type="text/javascript">
  12. onload = function(){
  13.  
  14. els = document.getElementById('box').getElementsByTagName('img');
  15. for( i=0; el = els[i++];){
  16. //tu el.width powinno działać wszędzie <-------------------------------------
  17. if( el.width >=50 && el.height >=50 ){
  18. var ok=1;
  19.  
  20. } else {
  21.  
  22. }
  23. }
  24. }
  25. function ukryj()
  26. {
  27. document.getElementById("reklama").style.visibility = "hidden";
  28. }
  29. </script>
  30. </body>
  31. </html>
  32.  


zamiast wyswietlic fotke a potem tekst "?questionmark.gif" wychodzi co wychodzi, zreszta sam zobacz smile.gif
kamil4u
Napisz co chcesz osiągnąć, bo teraz z tym kodem to nic nie wiadomo....

Ten kod odczytuje szerokość obrazka pod każdą przeglądarką....
Kod
<html>
<head>
</head>
<body>

<div id="box">
<img src="http://www.google.pl/logos/classicplus.png" alt="tresc">
</div>

<script type="text/javascript">
onload = function(){

els = document.getElementById('box').getElementsByTagName('img');
for( i=0; el = els[i++];){
alert(el.width);
}
}

</script>
</body>
</html>


Czego nie umiesz zrobić?
blokern
zamienilem alert na document.write i efekt jest taki ze fotka znika a zamiast fotki pojawia sie wartosc dla width. chce poprostu wyciagnac szerokosc zdjecia i pokazac dalej

  1. </head>
  2.  
  3. <div id="box">
  4. <img src="http://www.google.pl/logos/classicplus.png" alt="tresc">
  5. </div>
  6.  
  7. <script type="text/javascript">
  8. onload = function(){
  9.  
  10. els = document.getElementById('box').getElementsByTagName('img');
  11. for( i=0; el = els[i++];){
  12. document.write(el.width);
  13. }
  14. }
  15.  
  16. </body>
  17. </html>
kamil4u
Daj w kodzie gdzie chcesz, żeby się wyświetliła szerokość:
  1. <span id="test"></span>
, a w JS zamiast document.write(el.width);, użyj document.getElementById('test').innerHTML = el.width;

I już smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.