inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

174만명의 커뮤니티!! 함께 토론해봐요.

강의 코드 자료 공유 관련

미해결

퍼블리셔, 신입 프론트 개발자를 위한 실무에서 써먹는 실전 jQuery 설명서

강의 코드 중에 list_ajax.jsp 를 다운 받고 싶은데 어디서 받을 수 있나요 ??

  • jquery
장종욱 댓글 0 좋아요 0 조회수 213

pick 이렇게 만드는건 어떤가요?

미해결

함수형 프로그래밍과 JavaScript ES6+ 응용편

const obj2 = { a: 1 , b: 2 , c: 3 , d: 4 , e: 5 }; const pick = ( arr , obj ) => _ . go ( obj2 , L . entries , L . filter (([ k , v ]) => arr . includes ( k )), L . map (([ k , v ]) => [ k , v ]), object ) console . log ( pick ([ 'b' , 'c' , 'z' ], obj2 )); .

  • 함수형-프로그래밍
  • javascript
김윤진 댓글 1 좋아요 1 조회수 215

게시판 작성 후 상세보기로 redirect시 오류

미해결

남박사의 파이썬으로 실전 웹사이트 만들기

훌륭하신 강의 덕분에 잘 따라가고 있는데... 여기서 에러가 나서 도저히 진도가 안나가네요.. 게시판 작성 후 --> 게시판상세보기에서 (DB은 입력되지만, redirect(url_for ~~)에서 에러가 발생해서 진도가 못나가고 있어요 구글링을 해 봤는데 도저히 해결책이 없습니다. -------------------------------------------------------------------- from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from datetime import datetime from bson . objectid import ObjectId from flask import abort from flask import redirect from flask import url_for app = Flask ( __name__ ) app . config [ "MONGO_URI" ] = "mongodb://localhost:27017/myweb" mongo = PyMongo ( app ) @ app . route ( '/view' ) def board_view (): idx = request . args . get ( "idx" ) if idx is not None : board = mongo . db .board data = board . find_one ({ "_id" : ObjectId ( idx )}) if data is not None : result = { "id" : data .get( "id" ), "name" : data .get( "name" ), "title" : data .get( "title" ), "contents" : data .get( "contents" ), "isdate" : data .get( "isdate" ), "view" : data .get( "view" ) } return render_template ( "view.html" , result = result ) return "" @ app . route ( '/write' , methods =[ "GET" , "POST" ]) def board_write (): if request . method == "POST" : name = request . form . get ( "name" ) title = request . form . get ( "title" ) contents = request . form . get ( "contents" ) isdate = round ( datetime . utcnow (). timestamp () * 1000 ) view = 0 print ( name , title , contents , isdate , view ) board = mongo . db .board post = { "name" : name , "title" : title , "contents" : contents , "isdate" : isdate , "view" : view } x = board . insert_one ( post ) print ( x . inserted_id ) return redirect ( url_for ( "board_view" ), idx = x . inserted_id ) else : return render_template ( "write.html" ) if __name__ == "__main__" : app . run ( host = "127.0.0.1" , debug = True , port = 5000 ) -------------------------------------------------------------------- x = board . insert_one ( post ) print ( x . inserted_id ) return redirect ( url_for ( "board_view" ), idx = x . inserted_id ) 도 안되고 return redirect ( url_for ( "board_view" ), idx =str( x . inserted_id )) 이것도 안됩네요

  • python
thisauto 댓글 1 좋아요 1 조회수 683

발표스피치 오늘부터 시작

미해결

[발표스피치] 대기업 임직원, 스타트업 대표들이 배우는 청중을 사로잡는 발표 방법!

오늘부터 발표스피치 강의를 개시하였습니다. 다른 클래스 프로그램에서는 커뮤니티를 통해 피드백도 주시고 하는 것으로 알고 있는데 인프런에서는 어떻게 진행하게 되는지 궁금합니다.

  • 강의시작
  • PT
  • 스피치
  • PR
최윤정 댓글 1 좋아요 1 조회수 375

Annotations are not allowed here 에러

미해결

스프링 핵심 원리 - 기본편

1. 강의 내용과 관련된 질문인가요? 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 [질문 내용] 안녕하세요, Java도 스프링도 intelliJ도 처음이라 강의 하나하나 따라가고 있습니다: 컴포넌트 스캔 - 필터 강의에서 다음과 같은 에러를 만났습니다. annotation import를 했는데 여기서 사용할 수 없다는 에러였는데요, 다른분들은 문제가 없으신지 검색이 되지 않고구글링에서 나오는 경우들은 class에 붙여야 할 어노테이션을 메소드에 붙이고 있는 식으로 위치가 잘못되어있는 것 같은데 이건 그런 경우도 아니라서 오리무중인 상태입니다... IDE가 제공하는 Fix도 해당 라인 remove밖에 없구요. 뭐가 문제인 걸까요?

  • spring
  • oop
Han Gayoun 댓글 1 좋아요 0 조회수 2382

애노테이션 @Transactional의 위치 질문입니다.(AOP 관련)

해결됨

스프링 핵심 원리 - 고급편

안녕하세요 김영한님! 강의를 다 듣고나서 트랜잭션 AOP의 동작원리를 알 수있게 되어 정말 감사합니다. 다만 제가 궁금한건 애노테이션 @Transactional입니다. 주로 서비스의 메소드에 적용하는데 클래스에도 붙일 수 있더군요. @Service @Transactional (readOnly = true ) public class ProductService { 강의에서는 AOP 적용위치는 생성자, 필드 값 접근, static 메서드 접근, 메서드 실행 이라고 말씀하셨는데 저 애노테이션은 AOP와 관련이 없는건가요? 아님 내부적으로 클래스 단위에 붙일 때는 클래스 하위 메소드에도 전부 적용하도록 내부 코드에 설정이 되어있는건가요? (흑흑 강의를 다시 들어야하는 걸까요?) 질문 읽어주셔서 감사합니다!

  • @Trasactional
  • spring
  • aop
  • 디자인-패턴
Sunny 댓글 1 좋아요 0 조회수 640

새로 올리신 리액트쿼리 버전에서 getServerSideProps대신 getStaticProps 쓰는 이유가 궁금합니다.

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요. 자꾸 귀찮게 해드려서 죄송합니다. 리액트쿼리로 바꾸신거 조금씩 따라하면서 변형하고 있는데 /user/[id] /post/[id] 에서 getServerSideProps대신 getStaticProps 로 바뀐걸 봤습니다. 정적은 빌드시에 데이터 불러오는거라서 데이터 변경가능성이 있는 post/[id]같은 경우는 정적을 쓰면 안될것같은 느낌인데 무슨 장점이나 혹시 바꾸신 이유가 있을까요? 그리고 queryClient.prefetchQuery 에 대해서도 궁금한점이 있습니다. 현재 상품을 등록하는 /item/register.tsx를 작성중이고 로그인된 유저에서 정보를 가져와야 해서 서버사이드 랜더링을 적용중에 있습니다. 유저정보를 가져오는 api export function loadMyInfoAPI () { return axios . get ( '/user' ). then (( response ) => response . data ); } back에서 라우터 부분 // 로그인 유저 정보 얻기 router . get ( '/' , async ( req , res , next ) => { // GET /user 로그인 유지 위해 로그인한 유저의 정보 전송 console . log ( 'req.user?' , req . user ); try { if ( req . user ) { // 로그인 됐을경우 const userDataWithoutPassword = await User . findOne ({ // 프론트로 보낼 유저 정보를 재가공 where : { id : req . user . id }, attributes : { exclude : [ 'password' ], // 비밀번호 제외 }, include : [ { model : User , as : "Customers" , attributes : [ "id" , "company" ], exclude : [ 'UsersRelation' ], } ] }) res . status ( 200 ). json ( userDataWithoutPassword ); console . log ( JSON . stringify ( userDataWithoutPassword )); } else { res . status ( 200 ). json ( null ); } } catch ( error ) { console . error ( error ); next ( error ); } }); 프론트 /item/register.tsx에서 기본 골자는 const Register = () => { ... const { data : myUserInfo } = useQuery < User >( 'user' , loadMyInfoAPI ); ... 중략 return ( < AppLayout > < div > { JSON . stringify ( myUserInfo ) } </ div >< br /> ... 중략 < div > < List className = "demo-loadmore-list" itemLayout = "horizontal" dataSource = { myUserInfo . Customers } renderItem = { ( item ) => ( < List.Item key = { item . id } actions = { [ <> < Button type = "primary" shape = "circle" > 등록 </ Button > </> ] } > < List.Item.Meta title = { <> { item . company } < span > | </ span >< span > 담당자: { item . id } </ span > </> } /> </ List.Item > ) } /> </ div > 이렇게 로그인된 유저 정보를 출력해주는 부분이 있습니다. myUserInfo.Customers는 me.followers와 흡사한 개념으로 맍들었고요. 서버사이드 랜더링은 export const getServerSideProps = async ( context : GetServerSidePropsContext ) => { const cookie = context . req ? context . req . headers . cookie : '' ; axios . defaults . headers . Cookie = '' ; if ( context . req && cookie ) { axios . defaults . headers . Cookie = cookie ; } const response = await loadMyInfoAPI (); if (! response ) { return { redirect : { destination : '/' , permanent : false , }, }; } return { props : {}, }; }; 단순히 로그인체크만 해서 로그인이 안됐을경우 리다이랙트만 해주는 서버사이드랜더링을 하면 back에서 console . log ( 'req.user?' , req . user ); 값은 정상적으로 user객체를 출력합니다. 프론트 페이지도 정상적으로 데이터가 나오고요. JSON . stringify ( myUserInfo ) 로 출력한 데이터는 object {9} id : tester1 company : testers name : test phone : 101010 email : 2 role : NOVICE createdAt : 2021-12-17T04:43:25.000Z updatedAt : 2021-12-17T04:43:25.000Z Customers [2] 0 {2} id : ttt3 UsersRelation {4} 1 {2} id : tttt UsersRelation {4} createdAt : 2021-12-17T08:05:07.000Z updatedAt : 2021-12-17T08:05:07.000Z customerId : tttt providerId : tester1 이렇게 나옵니다. 물론 데이터를 받아와서 주입해주는 부분이 없기때문에 /item/register로 주소를 쳐서 들어가면 오류가 납니다. 데이터를 주입시켜주기 위해 쿼리클라이언트를 사용할 경우 export const getStaticProps = async () => { const queryClient = new QueryClient (); await queryClient . prefetchQuery ([ 'user' ], () => loadMyInfoAPI ()); return { props : { dehydratedState : JSON . parse ( JSON . stringify ( dehydrate ( queryClient ))), }, }; }; back에서 user는 undefined로 나오게 되고 오류가 발생합니다.. 어떠한 부분때문에 같은 loadMyInfoAPI 를 쓰는데도 불구하고 다른 결과가 나오는지 궁금함니다. 프론트 터미널의 오류메시지 TypeError: Cannot read property 'Customers' of undefined at Register (D:\3programming\excuse_moa\front_rq\.next\server\pages\item\register.js:2657:36) at processChild (D:\3programming\excuse_moa\front_rq\node_modules\react-dom\cjs\react-dom-server.node.development.js:3353:14) at resolve (D:\3programming\excuse_moa\front_rq\node_modules\react-dom\cjs\react-dom-server.node.development.js:3270:5) at ReactDOMServerRenderer.render (D:\3programming\excuse_moa\front_rq\node_modules\react-dom\cjs\react-dom-server.node.development.js:3753:22) at ReactDOMServerRenderer.read (D:\3programming\excuse_moa\front_rq\node_modules\react-dom\cjs\react-dom-server.node.development.js:3690:29) at Object.renderToString (D:\3programming\excuse_moa\front_rq\node_modules\react-dom\cjs\react-dom-server.node.development.js:4298:27) at renderPage (D:\3programming\excuse_moa\front_rq\node_modules\next\dist\server\render.js:596:45) at Object.ctx.renderPage (D:\3programming\excuse_moa\front_rq\.next\server\pages\_document.js:1161:30) at Function.getInitialProps (D:\3programming\excuse_moa\front_rq\.next\server\pages\_document.js:621:19) at Function.getInitialProps (D:\3programming\excuse_moa\front_rq\.next\server\pages\_document.js:1169:87) error - Error: "MyDocument.getInitialProps()" should resolve to an object. But found "undefined" instead. at Object.loadGetInitialProps (D:\3programming\excuse_moa\front_rq\node_modules\next\dist\shared\lib\utils.js:75:15) at runMicrotasks (<anonymous>) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async renderDocument (D:\3programming\excuse_moa\front_rq\node_modules\next\dist\server\render.js:609:30) at async Object.renderToHTML (D:\3programming\excuse_moa\front_rq\node_modules\next\dist\server\render.js:647:28) at async doRender (D:\3programming\excuse_moa\front_rq\node_modules\next\dist\server\next-server.js:1149:38) at async D:\3programming\excuse_moa\front_rq\node_modules\next\dist\server\next-server.js:1241:28 at async D:\3programming\excuse_moa\front_rq\node_modules\next\dist\server\response-cache.js:64:36 { page: '/item/register' } back의 터미널 로그 req.user? undefined GET /user 200 1.716 ms - 4

  • Next.js
  • nodejs
  • redux
  • express
  • react
Moa Kim 댓글 1 좋아요 0 조회수 372

.dockerIgnore

미해결

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

.dockerignore 파일에 node_modules를 적어줘도 따로 카피되지않아 삭제한것같은 효과를 줄수있죠? 정확히 몰라서 질문드립니다!

  • github
  • aws
  • docker
  • travis-ci
  • 데이터 엔지니어링
  • cicd
노른자 댓글 1 좋아요 0 조회수 279

요즘 인터넷상에 핫해서 당연히 아시겠지만 log4해킹관련해서 질문있습니다!

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

Log4J 또는 Log4Shell이 취약점으로 되어 전세계 제일 유명한 사이틀 마저도 이로 이루어진 사이트들이 전부 해킹 당하고있고 심지어 누가 했는지도 알수없다고 하는데요, 강의 내용상, Log4J를 포함하는 게 SLF4J이고 이걸 구현한것이 Logback이며 이걸 실무에서 가장 많이 쓴다고 배웠습니다. 현재 이렇게 보안이 뚫린 상태에서 Logback또한 취약점이 될까요?

  • spring
  • MVC
메모장 댓글 2 좋아요 3 조회수 728

kaikas 와 연동하여 로그인하려면 어떤걸 공부해야 할까요?

미해결

Klaytn 클레이튼 블록체인 어플리케이션 만들기 - NFT

강좌 두번보고 나니 이제 어느정도 개념은 잡히네요. 감사합니다. 크래프터스페이스와 같은 nft 거래소를 만들어보고 싶은데요 궁금한게 여기 들어가면 kaikas 지갑이랑 연동해서 로그인이 되던데 이렇게 하려면 어떤걸 봐야 하나요? caver-js 에 이런 내용이 있을까요? 검색하기가 좀 힘드네요.

  • 웹앱
  • blockchain
  • nft
신시아 댓글 2 좋아요 0 조회수 633

질문 있습니다

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

Jdbc~~가 Memory~~를 상속하지 않았는데도 불구하고 어떻게 Memory~~의 메소드를 사용할 수 있는지 이해가 가질 않습니다. 공통점이라고 한다면 둘 다 MembeRepository 인터페이스를 상속하고 있다는것 뿐이지 않나요? Jdbc~~ -> memberRepository <- Memory~~ (화살표는 인터페이스 상속중이라는 표시입니다) 이렇게 상속을 하고 있는거 같은데 Jdbc~~는 Memory~~와 직접적인 연관이 없지 않나요? SpringConfig.class에서 memberRepository()를 호출하고 memberRepository를 상속한 Jdbc~~가 반환되는데 어떻게 Memory~~의 메소드를 사용할 수 있는지 궁금합니다

  • spring
  • MVC
  • java
  • spring-boot
초코우유 댓글 2 좋아요 0 조회수 233

안녕하세요. 비주얼스튜디오코드 설치하는 이유가 뭔가요?

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요. 수강생입니다. 이거 굳이 비주얼스튜디오코드 설치하는 이유가 뭔가요? 이거 안쓰시고 이후 파이참만 쓰는거 같아서 질문을 올려요. 파이참 설치하라는게 없고 뭔가요? 그리고 중요한 게 있는데요. 파이참에서 콘솔창에서 명령어 해야되는게 이게 없어가지고 고생합니만

  • django
  • react
  • docker
  • python
네동 댓글 1 좋아요 0 조회수 524

스프링 mvc 전체 구조 그림에 html 응답이 dispatcher servlet(front controller)에서 나가야 하지 않나요?

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 지금까지(앞에 강의를 들으면서) servlet에서 응답을 처리해 주는 걸로 알고 있었는데요 view 에서 render 메소드를 통해 응답에 html을 실어주는 것은 이해를 했는데 응답(reference)이 들어옴 -> 서블릿 -> view -> 서블릿 -> 나감 순서대로 가는 것인지 서블릿 -> view -> 나감 순서대로 가는 것인지 혼동이 와서 질문드립니다 감사합니다!

  • MVC
  • spring
idealist 댓글 1 좋아요 0 조회수 334

맥 가상환경 실행시에

미해결

고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)

안녕하세요.... 강의를 맥에서 따라 하면서 듣고 있는데 강의에서처럼 python_ex라는 가상환경 폴더를 생성하고 지금까지는 잘 진행중인데, import requests 부분 부터는 오류가 납니다. 가상환경에서 pip로 설치하여 커맨드 창에서는 에러가 안나는데 Vscode 상에서는 오류가 납니다. 오류는 ModuleNotFoundError 입니다. Python 인터프리터 선택하여 가상환경의 bin폴더에 있는 python3를 선택하면 왼쪽 맨 아래에 python 3.10.0 64-bit 라고 제대로 뜨는데 여기를 클릭하면 경로가 가상환경의 bin이 아닌 /Library/Framework/Python.framework/Versions/3.10/bin/python3.10 으로 바뀌어 있네요... 가상환경 bin폴더의 python3를 보니 위 경로로 링크가 되어 있어서 그러는 듯 합니다. 윈도우에서는 실행파일이 그대로 복사되어 있는데 맥은 링크만 하는 것 같아요. 이럴 때 어떻게 해야 vscode에서 제대로 실행을 할 수 있을까요??

  • python
  • 가상환경
  • 동시성
Jaehwan Joo 댓글 2 좋아요 0 조회수 465

이 시점에서 궁금한 http와https

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

http를 공부하다보니까 https에 대해서 찾아보게되었는데요. 저희가 지금 사용하는것은 https인데, 제가 찾아본 결과 보안장치가 더 추가됐다고 하더라구요. 그러면 https도 지금 이제까지 말씀해주신 http의 특징들을 다 가지고있는거 포함 이면서, TCP/IP프로토콜에서 Application 에서 아래층 Transport로 내려가면서 HTTP 에다가 +SSL이라는 보안장치를 가진 정보를 주고 HTTPS가 돼서 전송되는 거라고 생각합니다. 즉, HTTP의 기본 프로토콜에다가+ SSL이 추가돼서 HTTPs가 되는거라고 생각하는데 , 그럼 이와 같은 원리로 원래 HTTP/1.1라는 대부분에 들어있는 스펙이 있는데 이후 업그레이드된 HTTP/2, HTTP/3 버전의 경우 또한 기존HTTP를 바탕으로 전송되면서 2 혹은 3로 변경이 되는건가요? 아니면 기존의 HTTP/1.1프로토콜이 아닌 HTTP/3의 경우는 UDP이므로 커스터마이징해서 보내지는건가요? 왜냐하면 이전 영상에서는 개발자도구 열어서 프로토콜을 보게되면 HTTP/1.1이 보였는데, 현재는 구글도그렇고 네이버도 그렇고 HTTP/1.1은없고, HTTP/2와 HTTP/3밖에 안보입니다.

  • http
  • https
  • network
EUNKYUNG JUNG 댓글 1 좋아요 0 조회수 439

props 내 카멜 케이스

미해결

Vue.js 시작하기 - Age of Vue.js

안녕하세요. Vue를 처음 다루는데 캡틴판교님의 강의 덕분에 쉽게 접근할 수 있습니다. 감사합니다 ㅎㅎ 이전에 같은 질문은 있지만 이해를 하지 못해 다시 질문드립니다. props내에서는 카멜 케이스로 동작하지 않고 있습니다. propsdata 는 되지만 propsData로 하게 되면 vue 개발자 도구에서 $attrs로 소문자로만 구성되어 있는 propsdata가 뜨게 되고, data에는 propsData: undefined라고 뜨게 되어 데이터가 넘어가지 않습니다. props 내에서는 소문자만 써야하나요?

  • vuejs
  • javascript
duswn1208 댓글 1 좋아요 2 조회수 463

ping 관련해서 질문드립니다.

미해결

(신규 강의로 재오픈 예정) 스스로 구축하는 AWS 클라우드 네트워크 - 기본편

안녕하세요. 우선 좋은 강의 감사합니다. public-ec2-d가 도쿄가 아닌 버지니아 북부로 했다는 점을 제외한 모든 설정을 강의와 동일하게 구성했다고 생각하는데, ping이 안되어 혹시 시도해볼만한 방법이 있을지 문의남깁니다. 현재 서울의 public-ec2-a에서 igw 통해 public-ec2-d의 외부아이피에 ping은 성공한것으로 보아 보안그룹이나 ACL의 문제는 아닌 것으로 자체판단하고 있습니다. (private-ec2-a도 public과 라우팅테이블 제외한 구성이 동일합니다.) 추가로, s2s VPN 구축을 목적으로 하고있어서 private ec2 구성 이후 섹션 (vpc endpoint, ELB, VPC peering, Transit gateway) 은 아직 수강하지 않았는데, 해당 섹션들에서 s2s VPN 구축에 필요한 구성이 있었을 가능성이 있을까요?

  • aws
  • network
public 댓글 3 좋아요 0 조회수 417

pathVariable 질의

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요! 강의 잘 듣고 있는 학생입니다! 교재 4페이지 /users/{userId} @PathVariable("data") Integer data 라는 부분에서 pathVariable이 userId 니까 @PathVariable("userId")를 해야 하지 않나요?

  • spring
  • MVC
mino 댓글 2 좋아요 0 조회수 495

안넘어가요.

미해결

<M.B.I.T> 테스트 페이지 만들기! with Django

1/3에서는 잘 넘어가는데 2/3에서는 안넘어 갑니다. html코드는 이거입니다. <! DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" > < meta http-equiv = "X-UA-Compatible" content = "IE=edge" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < title > 나의 개발 유형찾기 </ title > < link rel = "stylesheet" type = "text/css" href = "css/reset.css" > < link rel = "stylesheet" type = "text/css" href = "css/form.css" > </ head > < body > < section id = "survey" > < div class = "wrapper" > < form id = "form" > < div class = "test" > < div class = "question_container" > < h3 class = "number" > 1/3 </ h3 > < h3 class = "question" > 당신이 가장 재밌었던 수업은? </ h3 > </ div > < div class = "answer" > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > </ div > < div class = "btn_wrap" > < button class = "next_btn" > 다 음 </ button > </ div > </ div > < div class = "test" > < div class = "question_container" > < h3 class = "number" > 2/3 </ h3 > < h3 class = "question" > 당신이 가장 재밌었던 수업은? </ h3 > </ div > < div class = "answer" > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > </ div > < div class = "btn_wrap btn_sort" > < button class = "prev_btn" > 이 전 </ button > < button class = "next_btn" > 다 음 </ button > </ div > </ div > < div class = "test" > < div class = "question_container" > < h3 class = "number" > 3/3 </ h3 > < h3 class = "question" > 당신이 가장 재밌었던 수업은? </ h3 > </ div > < div class = "answer" > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > < div > < input id = "one" type = "radio" name = "answer_1" > < label for = "one" > 게임 개발(유니티, 언리얼, Pygame) </ label > </ div > </ div > < div class = "btn_wrap btn_sort" > < button class = "prev_btn" > 이 전 </ button > < input type = "submit" value = "제 출" class = "submit_btn" /> </ div > </ div > </ form > </ div > </ section > < script src= "https://code.jquery.com/jquery-3.6.0.js" ></ script > < script type= "text/javascript" src= "js/form.js" ></ script > </ body > </ html > 자바스크립트 코드는 이거입니다. function scrollUp () { const vheight = $ ( '.test' ). height (); $ ( 'html, body' ). animate ({ scrollTop : (( Math . ceil ( $ ( window ). scrollTop () / vheight ) - 1 ) * vheight ) }, 500 ); }; function scrollDown () { const vheight = $ ( '.test' ). height (); $ ( 'html, body' ). animate ({ scrollTop : (( Math . floor ( $ ( window ). scrollTop () / vheight ) + 1 ) * vheight ) }, 500 ); } $ ( function (){ $ ( '.next_btn' ). click ( function (e){ let divs = $ ( this ). parent (). prev (). children (); let inputs = divs . find ( 'input:checked' ); if ( inputs .length < 1 ) { alert ( '문항이 선택되지 않았습니다.' ); return false ; } e . preventDefault (); scrollDown (); }); $ ( '.prev_btn' ). click ( function (e){ e . preventDefault (); scrollUp (); }); $ ( "#form" ). submit ( function () { let radios = $ ( 'input[type=radio]:checked' ); if ( radios .length < 10 ) { alert ( "문항이 선택되지 않았습니다." ); return false ; } return true ; }); $ ( "html, body" ). animate ({ scrollTop : 0 }, 500 ); });

  • HTML/CSS
  • django
  • javascript
이영진 댓글 1 좋아요 1 조회수 379

인기 태그

인프런 TOP Writers

주간 인기글