IT

JSFiddle에서 JavaScript가 작동하지 않는 이유는 무엇입니까?

lottoking 2020. 7. 26. 11:50
반응형

JSFiddle에서 JavaScript가 작동하지 않는 이유는 무엇입니까?


JSFiddle 의 문제가 무엇인지 알 수 없습니다 .

HTML :

<input type="button" value="test" onclick="test()">

자바 펼쳐 :

function test(){alert("test");}

버튼을 클릭해도 변화가 없습니다. 콘솔에 "테스트가 정의되지 않았습니다"라고 표시됩니다

JSFiddle 문서를 읽었습니다. .JS 코드가 추가 <head>되고 HTML 코드가 추가 됩니다. (이 JSFiddle 문서를 읽었습니다 <body>.)


함수가로드 서열이 정의되어 있으므로 다른 범위에 있습니다. 주석에서 @ellisbben이 메모 한 것처럼 window표현 에 명시 적으로 정의하여 문제를 해결할 수 있습니다 . 그러나 처리기를 배열에 눈에 띄게 배치하는 것이 좋습니다. http://jsfiddle.net/pUeue/

$('input[type=button]').click( function() {
   alert("test");   
});

인라인 대신이 방법으로 적용을 적용하면 HTML이 깨끗하게 유지됩니다. jQuery를 사용하고 원하는 경우 프레임 워크의 유무에 관계없이 또는 다른 프레임 워크를 사용하여 수행 할 수 있습니다.


랩 설정을 지정하지 언어는 "onLoad"입니다. 결과가로드 된 후 모든 JavaScript가 함수 실행에 랩핑됩니다. 모든 변수는이 함수에 대해 로컬 전역에서 사용할 수 있습니다.

줄 바꿈 설정을 "랩 없음"으로 변경하면 작동합니다.

http://jsfiddle.net/zalun/Yazpj/1/

사용하지 않기 때문에 프레임 워크를 "라이브러리 없음"으로 전환했습니다.


다른 방법으로 함수를 다음과 같은 변수로 선언하십시오.

test = function() {
  alert("test");
}

jsFiddle


세부

편집 (@nnnnnn의 의견에 따라)

@nnnnnn :

test =(없이 var) 말하는 것이 고칠까요?

다음과 같은 함수를 정의 할 때 :

var test = function(){};

함수는 로컬로 정의되어있을 경우 다음과 같이 함수를 정의하지 않았습니다 var.

test = function(){};

testwindow최상위 범위 에있는 개체 에 정의되어 있습니다.

왜 작동 작동합니까?

@zalun처럼 :

랩 설정을 지정하지 언어는 "onLoad"입니다. 결과가로드 된 후 모든 JavaScript가 함수 실행에 랩핑됩니다. 모든 변수는이 함수에 대해 로컬 전역에서 사용할 수 있습니다.

그러나이 구문을 사용하면 :

test = function(){};

test전역 적으로 정의되어 있기 때문에 함수에 액세스 할 수 있습니다.


참고 문헌 :


프레임 워크 및 확장 패널의 랩 설정을 "랩핑 없음 <body>"으로 변경하십시오.


코드에는 문제가 없습니다. OnLoad에서 선택하십시오.


<script> 
function test(){
 alert("test");   
}
</script>

<input type="button" value="test" onclick="test()">

Select OnDomready

HTML :

<input id="dButton" type="button" value="test"/>

자바 펼쳐 :

addEventListener('load', init, false);

function init()
{
  oInput = document.getElementById('dButton');
  oInput.onclick = test;
}

function test(){
  alert("test");
}

참고 URL : https://stackoverflow.com/questions/5431351/why-isnt-my-javascript-working-in-jsfiddle

반응형