2011-08-30 5 views
0

방법이외부 JS 파일에서 CSS 값 및 변수 가져 오기?

var h = $('#searchcontainer').height(); 
$('#completeholder').css('height', h + 'px'); 

작품과 같은 코드를 올 때 자체 HTML 파일 내부와 난은 .js 파일을로드 할 때? 전역을 정의하려고 시도했습니다. var h; 내 주 파일 안쪽에 JS 파일 안의 코드가 아무런 문제없이 작동 할 것으로 기대하고 있습니다. 어떤 아이디어? 감사합니다 :)

편집 : 코드 : 당신이 작업 페이지에서 다음을 누르면 는, CSS를이 결국 크기를 조절 상단의 의견을 참조, 그리고 그 This one does not work

This one works

js 파일을 기본 헤더로 가져 왔기 때문입니다.

답변

3

필자는 그것이 실행될 때의 타이밍과 관련이 있다고 생각합니다. 페이지가로드되기 전에 실행되면 오브젝트는 아직 페이지에 없으므로 찾을 수 없습니다.

는 상관없이의 위치 함수 작업을하지 않으려면,이 같은 $(document).ready() 안에 넣어 :

$(document).ready(function() { 
    var h = $('#searchcontainer').height(); 
    $('#completeholder').css('height', h + 'px'); 
}); 

당신이 정말로하려고하는 것은 다음 다른 $(document).ready(function() 호출 사이 주 전역 변수 인 경우 당신은 $(document).ready(function() 외부에서 전역 변수를 선언해야합니다 같은

var myGlobal; 

$(document).ready(function() { 
    var myGlobal = $('#searchcontainer').height(); 
}); 

$(document).ready(function() { 
    $('#completeholder').css('height', myGlobal + 'px'); 
}); 

전역은 일반적으로 처음부터 좋은 생각이 아니다 그래서 당신은 정말 방법을 찾는하면됩니다한다고 함수 변수에 매개 변수를 전달하는 것과 같은 전역 변수없이이를 해결하십시오. 실제 작동 및 비 작동 코드를 볼 수

일부 관측 :

  1. 동일한 ID (같은이 contentholder)와 여러 개체를 가지고있다. ID로 해당 객체를 참조하는 것은 안정적으로 작동하지 않으며 HTML에서 금지됩니다.
  2. 인라인 버전에서는 case 'NextQuestion1': 블록 및 case 'NextQuestion2Dance': 블록에서 전체 홀더의 높이를 설정하지만 외부 JS 버전에서는 그렇지 않습니다. 그 코드는 그것을 수정하는 것으로 보인다. 내 브라우저에서 높이는 479 (정확한 높이)로 설정됩니다. 이는 외부 JS 버전에서 발생하지 않으므로 두 버전간에 코드가 동일하지 않습니다.
+0

전체 코드는 문서 준비 기능에 있습니다./ – pufAmuf

+0

다음 추측입니다. jQuery가 외부 JS 파일보다 먼저로드됩니까? JS 파일은 적절한 순서로로드해야합니다. 나는 우리가 문제가 무엇인지 알기에 충분한 정보를 공개하지 않았으므로 이제는 우리가 추측하고 있다는 것을 깨닫기를 바랍니다. 작동하지 않는 페이지에 대한 링크를 제공하면 문제가 해결됩니다. – jfriend00

+0

실제로 JS 파일에서 전체 코드를 가져 와서 html 안에 넣으면 변수가 파일 사이를 넘지 않는다고 생각합니다. 모든 것이 작동합니다. 그리고 일부 콘텐츠는 동적으로로드 된 후이 코드도 삽입됩니다. 그리고 html 파일에서 다시 실행하면 다시 작동합니다. – pufAmuf

관련 문제