2012-06-07 4 views
0

경고는 작동하지만 반환 값은 0입니다. 올바른 값을 반환하려면 어떻게합니까?어떻게이 값을 반환하도록 자바 스크립트를 얻습니까?

var img; 
img = new Image(); 
img.onload = function() { 
    alert(img.width); 
    return(img.width); 
}; 
img.src = "https://maps.gstatic.com/mapfiles/dir/bike.png"; 
alert(img.width); 
+1

'onload'는 미래의 임의의 시점에서 실행될 것입니다 : 당신이 onload 함수 자체에서해야 할 일을하십시오. –

+0

어쩌면 당신이 실제로 성취하려는 것을 설명해야합니다. 그러면 누군가가 당신에게 갈 길을 줄 수있을 것입니다. – codemonkey

+0

어디에서'img.width'를 돌려 주려고합니까? 더 많은 정보를 제공할수록 도움을받을 수 있습니다. – guanome

답변

3

당신은 그렇게 할 수 없습니다. 이미지가로드되면 onload이 실행됩니다. 이는 src을 설정 한 후에 나중에 onload이 실행됨을 의미합니다.

onload 안에 이미지의 너비를 다루는 코드를 모두 넣어야합니다.

2

값을 반환 할 수는 있지만 캡처 할 방법이 없습니다.

이미지가로드되면 onload에 전달하는 기능이 실행됩니다. 그러나 거기에 반환 값을 검색 할 수있는 방법은 없습니다. 값을 처리하기 위해 내부의 다른 함수를 호출 할 수 있습니다.

+0

그래, 그 값을 돌려 줄 방법이 없나요? – user1357182

+1

@ user1357182 다른 함수를 호출하고 매개 변수로 전달하면됩니다. 이것이 비동기 코딩의 특성입니다. – Sirko

0

나는 크롬이 코드에서 10를 얻을 : 당신은 이미지 (onload에서) 폭을 조회하기 전에로드 될 때까지 기다려야합니까

var img = new Image(); 
img.onload = function() { console.log(img.width); } 
img.src = "https://maps.gstatic.com/mapfiles/dir/bike.png"; 

.

관련 문제