2013-04-13 1 views
1

JavaScript로 들어가기 시작 했으므로 지금과 같은 정확한 시나리오를 찾을 수 없으므로 운 좋게 노력할 것입니다. 나는 비디오는 우리의 웹 사이트에 피드를 만들 외부 JS 파일에 두 가지 기능이 있습니다로컬 변수를 제한된 변경 만 수행 할 수있는 함수에 전달합니다.

function getVideos() { 
    //gets a list of videos 
} 

//callback function automatically called by getVideos() 
function response(jsonData) { //can't change this line 
    var resp = document.getElementById("resp"); //can change this line and any subsequent lines 
    //parses data and populates resp 
} 

그런 다음, HTML 측에서, 우리가 getVideos 전화를()와 비디오 피드가 생성되어 채워집니다.

그러나 응답()으로 원하는 요소 ID를 전달하여 같은 페이지의 여러 위치에 여러 개의 동영상 피드를 만들 수 있습니다. 문제는 다른 매개 변수를 포함하도록 response() 함수 선언을 변경할 수 없다는 것입니다. 적어도 우리 회사의 비디오를 호스팅 할 수 있다고 믿을 수는 없습니다.

getVideos()를 사용하여 response()를 래핑하고 거기에서 요소 ID를 전달하려고 시도했지만 response()가 호출되지 않고 요소 ID를 저장하는 것으로의 해결책이 생각납니다 내가 아는 전역 변수는 일반적으로 자바 스크립트에서 no-no이다.

내 질문 : 글 머리 기호를 물고 전역 변수를 사용합니까 아니면 다른 방법이 있습니까? http://support.brightcove.com/en/video-cloud/docs/making-media-api-calls-dynamic-script-tags

+0

에 오신 것을 환영를 호출! 제목에 태그를 추가 할 필요가 없습니다. 태그 시스템이 있습니다. 일반적인 설명은 http://meta.stackexchange.com/q/19190을 참조하십시오. – Patrick

+0

환영과 조언, Patrick에게 감사드립니다! – user2276325

+0

변경할 수있는 항목과 변경할 수없는 항목이 100 % 명확하지 않습니다. 특히 getVideos 함수, JSON 응답의 구성 및 HTML을 변경할 수 있습니까? –

답변

0

: 우리는 우리의 비디오 호스트에서 다음과 같은 것) (응답에 자습서를 http://www.thebearrocks.com/Other/js/videoFeed/createVideoFeed.js 을 그리고 여기에 있습니다 : 그것은 (폐쇄로) 지금의 약자로 더 많은 정보를 들어

, 여기에 우리의 JS 코드 인수를 사용할 수 있습니까? 그래서 같은 :

function response(jsonData) { //callback function automatically called by getVideos() 
    var elemId = arguments.length<2 ? "resp" : arguments[1]+""; 
    var resp = document.getElementById(elemId); 
    //parses data and populates resp 
} 

또는,이 같은 기본 값이 무엇을 두 번째 인수 선언 : 하나 또는 두 개의 인수로 호출 할 수 있습니다

function response(jsonData, elemId) { 
    elemId = elemId || "resp"; 
    var resp = document.getElementById(elemId); 
    //parses data and populates resp 
} 

이 경우 함수를

나 '
+0

나는 그들이 편집 할 수없는 기능이라고 확신한다. – Xymostech

+0

내가 틀린 것이 아니라면, 나는 이미 가지고있는 것보다 더 많은 논쟁을 받아들이도록 반응()을 바꿀 수 있다고 생각하지 않는다.동영상을 호스팅하는 회사의 자습서 링크는 response()에 대한 단 하나의 인수 만 지정합니다. 나는 당신의 첫 번째 제안을 살펴볼 것입니다. 감사! – user2276325

0

내가 getVideos()로 getVideos()를 래핑하고 거기에서 요소 ID를 전달하려고 시도했지만 response()가 호출되지 않았고 내가 생각할 수있는 유일한 해결책은 요소 ID를 전역 변수에 저장하는 것입니다. 내가 아는 것은 유전자가 없다는 것이다. 자바 스크립트에서 ral.

제 질문은 : 글 머리 기호를 물고 전역 변수를 사용합니까 아니면 다른 방법입니까?

번호는 아니 id 변수는 글로벌하게해야하지만 해당 지역의 response 기능은 다시 JSONP script에서 호출하기 위해 필요 - 당신이 closure을 만들 것입니다.

당신은 할 수 있습니다 "수출"을 유래하는

window.response = mylocalResponseFunction; // you did name that local var "response" 
+0

수출의 의미가 확실하지 않습니다. 당신은 명확히 할 수 있습니까? 나는 아직도 JS에 조금 새로운 것이다. – user2276325

+0

함수가 "외부에서"호출 될 수 있도록 선언 된 로컬 범위에서 내 보냅니다. 범위 지정 함수 (귀하의 경우에는'createVideoFeed')에서 그것을'return'하거나 콜백으로 여기에 추가하거나 여기 에서처럼 더 높은 범위의 변수에 할당하는 등 다양한 방법이 있습니다. 클로저에 관한 링크 된 질문을 읽었습니까? – Bergi

관련 문제