javascript - js 코드를 본문에서는 사용할 수 있지만 머리에서는 사용할 수 없습니까?
伊谢尔伦
伊谢尔伦 2017-05-19 10:24:41
0
5
743

별도의 js 파일에 작성하고, 로딩 문제를 방지하기 위해 window.onload=function(){}을 사용했습니다.
1. 본문에서 직접 코드를 삽입하면 작동합니다.
2. 사용할 수 없습니다. 파일에서 window.onload=function(){}을 삭제하면 사용할 수 있습니다.
3. 코드에 직접 삽입하든지 파일에 삽입하든 사용할 수 없습니다.
4. 콘솔은 오류를 보고하지 않으며 디버깅할 수 있습니다. 브라우저에서 이 js 파일을 찾으세요.
페이지 로딩에 문제가 있는 것 같습니다. 구체적인 문제가 무엇인지 알 수 없습니다. . .
코드 게시

으아아아

js 코드는 이렇습니다

으아아아
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(5)
曾经蜡笔没有小新

먼저 제안하고 싶은 점은 파일 이름 지정에 한자를 포함하지 않는 것이 가장 좋으며 일반적으로 숫자로 시작하지 않는 것이 좋습니다.

문제 정보:
콘솔에 오류가 보고되지 않으며 디버거에서 js 파일을 찾을 수 있습니다.: window.onload=function(){}을 사용하는 한 code>, js code 헤드에 넣어도, 본문에 넣어도, 파일 형태로 넣어도 안에 있는 코드는 반드시 실행됩니다. 控制台没报错且能在调试器中找到这个js文件:只要你使用了window.onload=function(){},js代码是肯定执行的,不论你是放在head里面还是body里面,也不论你是不是以文件的形式引入的,里面的代码都会执行。

从body里插入js文件,不能用;文件中删掉window.onload=function(){},能用:html中的onclick="showPic(this)",这个showPic函数是定义在全局作用域下面的,不能用window.onload包裹,当你包裹的时候,showPic的作用域就处于onload这个函数里面了,在全局作用域下找不到showPic,所以点击时,showPic函数里面的代码没有执行,其他的js代码是执行的,你看看a标签里面已经添加上了onclick等代码。

写在head里,无论直接插入代码还是文件,都不能用

본문에서 js 파일을 삽입하지만 사용할 수 없습니다. 파일에서 window.onload=function(){}을 삭제하면 사용할 수 있습니다.: onclick="showPic(this )"에서 이 showPic 함수는 전역 범위에 정의되어 있으며 window.onload로 래핑할 수 없습니다. 래핑하면 showPic의 범위가 onload 함수 내부에 있습니다. 전역 범위에서는 ShowPic을 찾을 수 없습니다. . 이므로 클릭하면 showPic함수 안의 코드는 실행되지 않지만 다른 js 코드는 a 태그에 추가된 것을 볼 수 있습니다.

는 헤드에 작성되어 코드에 직접 삽입하든 파일에 직접 삽입하든 사용할 수 없습니다. : dom 쿼리의 경우 현재 dom 트리가 구축되지 않았으므로 a 태그를 사용할 수 없습니다. 질문했다. 헤드에 작성한 DOM 쿼리 js 코드는 window.onload로 래핑해야 하는데, showPic 함수를 추출해서 글로벌 스코프에 넣어야 정상적으로 실행될 수 있습니다.

@张东东 정답은 맞지만, element.onclick 바인딩 이벤트 방식(댓글 달아주신 코드)을 사용하셨는데요, 이때 showPic 함수를 스코프 체인에서 찾을 수 있어서 실행이 가능합니다. 🎜 🎜@stephenhuang 온로드에 작성된 showPic 코드를 실행할 수 있나요? 🎜
迷茫

스크립트는 본문 아래에 위치해야 합니다

으아아아

가장 먼저 알아야 할 사항은 다음과 같습니다.

html 파일은 하향식으로 실행되지만 도입된 CSS와 자바스크립트의 순서가 다릅니다. CSS를 도입하고 로드할 때 프로그램은 여전히 ​​하향식으로 실행되며, <script> 스레드가 중단되고 대기 중입니다. 스크립트 실행이 완료된 후에만 프로그램이 계속 실행됩니다.

그래서 온라인 토론의 대부분은 스크립트 스크립트를 <body> 뒤에 두는 것입니다. 그러면 스크립트 스크립트의 오랜 실행으로 인해 DOM 생성이 지연되거나 차단되지 않고 페이지 로딩 속도가 빨라집니다. .

그러나 일부 페이지 효과를 구현하려면 일부 js 스크립트를 미리 동적으로 로드해야 하기 때문에 본문 뒤에 모든 스크립트를 넣을 수는 없습니다. 따라서 이러한 스크립트는 <body> 앞에 배치되어야 합니다.

그래서 스크립트 배치의 원칙은 "페이지 효과 구현 클래스를 위한 js는 body 앞에 배치해야 하고, action, Interaction, event-driven js는 body 뒤에 배치할 수 있다"라고 생각합니다.

巴扎黑

헤드에 배치되기 때문에 js 태그를 만나면 js가 아직 다운로드되지 않고 dom 렌더링이 완료되지 않아 현재로서는 js가 dom 요소를 얻을 수 없습니다.

左手右手慢动作

먼저 스크립트를 헤드에 넣을 수 있는데, 많은 웹사이트에서 이런 식으로 사용하고 있습니다. 예를 들어 페이지가 열리면 휴대폰인지 PC JS 방식인지 판단해야 하는데, 등.
둘째, 귀하의 질문에 대한 답변을 약간 수정하여 테스트를 실행할 수 있게 되었습니다. js 부분만 변경되었으며 html 부분은 변경되지 않았습니다.

window.onload=function(){

으아아아

}

그래서 js 코드가 잘못 작성되었을 수도 있습니다.

phpcn_u1582

정말 감사합니다. 이제야 무슨 일인지 알겠어요! 그 제안은 매우 유용했고 나는 그것을 받아들였습니다.
답변란에 실수로 썼는데, 작성했으니 유용한 내용을 작성하고 코드 몇줄 추가해보겠습니다
Let lis[i].setAttribute('onclick','showPic( this); return false;'); 다음과 같이 작성해도 됩니다:

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿