주소 표시 줄에서 구문 분석 된 문자열을 인수로 사용할 수없는 함수

데이비 카 만지

격투 게임 Tekken 7의 캐릭터에 대한 기본 소개가 포함 된 웹 사이트를 다시 구축하고 있습니다 . 나는 모든 캐릭터와 그 데이터를 객체로 저장하고 웹 페이지에 캐릭터의 데이터를 표시하는 기능을 설정하여 해당 캐릭터의 이름을 유일한 인수로 받아 들였습니다.

/* DECLARATIONS */
// Profile
let charName = document.getElementById("char-name");
let charNickname = document.getElementById("nickname");

let charFlag = document.getElementById("flag");
let charImg = document.getElementById("image");

let charAge = document.getElementById("age");
let charCountry = document.getElementById("country");
let charFightingStyle = document.getElementById("fighting-style");
let charDebut = document.getElementById("first-appearance");

// Scores
let charOffense = document.getElementById("offense");
let charDefence = document.getElementById("defence");
let charRange = document.getElementById("range");
let charPunishment = document.getElementById("punishment");

let charGimmicks = document.getElementById("gimmicks");
let charExecution = document.getElementById("execution");
let charHurtbox = document.getElementById("hurtbox");

// Playstyle and Intro
let charPlaystyle = document.getElementById("playstyle");
let charIntro = document.getElementById("introduction");


/* DISPLAY FUNCTION */
const display = character => {
    charName.innerHTML = character.name;
    charNickname.innerHTML = character.nickname;

    charFlag.src = character.flag;
    charImg.src = character.image;

    charAge.innerHTML = character.age;
    charCountry.innerHTML = character.country;
    charFightingStyle.innerHTML = character.fightingStyle;
    charDebut.innerHTML = character.debut;

    charOffense.innerHTML = character.offense;
    charDefence.innerHTML = character.defence;
    charRange.innerHTML = character.range;
    charPunishment.innerHTML = character.punishment;

    charGimmicks.innerHTML = character.gimmicks;
    charExecution.innerHTML = character.execution;
    charHurtbox.innerHTML = character.hurtbox;

    charPlaystyle.innerHTML = character.playstyle;
    charIntro.innerHTML = character.introduction;
}

/* CHARACTER EXAMPLE */
// Jin Kazama
const jin = {
    // Profile
    name: "Jin Kazama",
    nickname: "The Child of Destiny",

    flag: "../img/flagicons/japan.svg",
    image: "../img/characters/jin.png",

    age: 21,
    country: "Japan",
    fightingStyle: "Traditional karate",
    debut: "<em>Tekken 3</em>",

    // Scores
    offense: 9,
    defence: 10,
    range: 8,
    punishment: 8,

    gimmicks: 3,
    execution: 3,
    hurtbox: 3,

    // Playstyle
    playstyle: "Versatile, keep-out, Mishima",
    introduction: "<p>Versatile character who performs at his best in the mid-range, armed with good poking, great counter hit tools, great damage output, variety in his throws and a unique parry that deals with all highs and mids except projectiles (fireballs). While his Mishima-style tools are not quite as effective as those of the out-and-out Mishima characters, he makes up for it with other situational moves that plug those weaknesses. He does, however, lack range on a few key punishers.</p>",
};

/* CALLING DISPLAY FUNCTION */
let params = (new URL(document.location)).searchParams;
let char = params.get("view");
display(char);

코드는 주소 표시 줄에서 "view"매개 변수를 구문 분석하여 함수에 인수로 반환해야합니다. 예를 들어 주소 표시 줄에 URL이있는 .../guides/character.html?view=jin경우 코드는 이상적으로 jin값을 구문 분석하고 이를 표시하기 위한 인수로 함수에 다시 전달해야 합니다 . 나는 값이 문제없이 전달되었는지 확인하기 위해 char인수를 테스트했으며 예상대로 console.log인쇄 jin되었습니다.

그러나 코드가 자체적으로 실행되면 값을 인수로 사용할 수없고 대신 정의되지 않은 개체를 다시 전달하며 콘솔에 여기에 표시된 오류 메시지 GET [file path]/guides/undefined net::ERR_FILE_NOT_FOUND표시됩니다 .

아무도 왜 이런 일이 발생하는지 이해하도록 도울 수 있습니까? 나는 여전히 자바 스크립트의 내부 동작을 배우고있어서 완전히 어리둥절하다.

알렉산더 니드

아주 이 정확한을 가진 부근에 있습니다. 나는 당신이 직면하고있는 문제는 당신이 "jin"당신의 const jin. 그러나 이것은 실제로 JS 렌더링 엔진이 작동하는 방식이 아닙니다. 문자열은 "jin"단순히 문자열 로 전달되므로 모든 값이 정의되지 않은 것으로 표시됩니다. 문자열 "jin"에는 원하는 속성이 없기 때문 입니다.

"jin"전달 된 문자열 을 기록한 다음 여러 가지를 기록합니다 undefined.

const jin = {
    // Profile
    name: "Jin Kazama",
    nickname: "The Child of Destiny",

    flag: "../img/flagicons/japan.svg",
    image: "../img/characters/jin.png",

    age: 21,
    country: "Japan",
    fightingStyle: "Traditional karate",
    debut: "<em>Tekken 3</em>",

    // Scores
    offense: 9,
    defence: 10,
    range: 8,
    punishment: 8,

    gimmicks: 3,
    execution: 3,
    hurtbox: 3,

    // Playstyle
    playstyle: "Versatile, keep-out, Mishima",
    introduction: "<p>Versatile character who performs at his best in the mid-range, armed with good poking, great counter hit tools, great damage output, variety in his throws and a unique parry that deals with all highs and mids except projectiles (fireballs). While his Mishima-style tools are not quite as effective as those of the out-and-out Mishima characters, he makes up for it with other situational moves that plug those weaknesses. He does, however, lack range on a few key punishers.</p>",
};

const display = character => {
    console.log(character);
    console.log(character.name);
    console.log(character.nickname);

    console.log(character.flag);
    console.log(character.image);

    console.log(character.age);
    console.log(character.country);
    console.log(character.fightingStyle);
    console.log(character.debut);

    console.log(character.offense);
    console.log(character.defence);
    console.log(character.range);
    console.log(character.punishment);

    console.log(character.gimmicks);
    console.log(character.execution);
    console.log(character.hurtbox);

    console.log(character.playstyle);
    console.log(character.introduction);
}

display('jin');

그래서 그것을 고치는 방법? 가장 쉬운 방법은라는 거대한 구성 개체를 만드는 것입니다.이 characters개체에는 모든 속성이있는 개체가 포함 된 각 캐릭터의 이름에 대한 속성이 포함되어 있습니다. 객체를 사용하여 모든 속성을 가진 객체를 얻기 위해 문자열로 문자를 참조 할 수 있습니다.

전체 개체를 표시하고 그 뒤에 개별 통계 / 속성을 표시합니다.

const characters ={
    jin: {
        // Profile
        name: "Jin Kazama",
        nickname: "The Child of Destiny",

        flag: "../img/flagicons/japan.svg",
        image: "../img/characters/jin.png",

        age: 21,
        country: "Japan",
        fightingStyle: "Traditional karate",
        debut: "<em>Tekken 3</em>",

        // Scores
        offense: 9,
        defence: 10,
        range: 8,
        punishment: 8,

        gimmicks: 3,
        execution: 3,
        hurtbox: 3,

        // Playstyle
        playstyle: "Versatile, keep-out, Mishima",
        introduction: "<p>Versatile character who performs at his best in the mid-range, armed with good poking, great counter hit tools, great damage output, variety in his throws and a unique parry that deals with all highs and mids except projectiles (fireballs). While his Mishima-style tools are not quite as effective as those of the out-and-out Mishima characters, he makes up for it with other situational moves that plug those weaknesses. He does, however, lack range on a few key punishers.</p>",
    }
};

const display = character => {
    console.log(character);
    console.log(character.name);
    console.log(character.nickname);

    console.log(character.flag);
    console.log(character.image);

    console.log(character.age);
    console.log(character.country);
    console.log(character.fightingStyle);
    console.log(character.debut);

    console.log(character.offense);
    console.log(character.defence);
    console.log(character.range);
    console.log(character.punishment);

    console.log(character.gimmicks);
    console.log(character.execution);
    console.log(character.hurtbox);

    console.log(character.playstyle);
    console.log(character.introduction);
}

display(characters['jin']);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

vim에서 강조 표시 : 주석 구분 기호 다음에 특수 문자열이있는 줄 구분

분류에서Dev

함수 호출시 문자열로 구문 분석 된 배열

분류에서Dev

준비된 SQL 문을 사용하는 PHP 함수-implode를 사용하여 함수에 대한 인수로 쉼표로 구분 된 배열 값 입력

분류에서Dev

점으로 구분 된 문자열을 사전 변수로 구문 분석

분류에서Dev

C ++에서 쉼표로 구분 된 변수 구문 분석

분류에서Dev

배열 내에서 문자열 화 된 배열을 구문 분석 할 수 없습니다.

분류에서Dev

stdin에서 부동 소수점으로 문자열을 구문 분석 할 수 없음-Rust

분류에서Dev

INDEX 함수 Google 시트에서 문자열을 구문 분석하는 방법

분류에서Dev

Spring Boot 2에서 인용 된 문자열을 JSON으로 포함하는 요청 본문 구문 분석

분류에서Dev

REGEX를 사용하여 Java에서 점이있는 문자열을 구문 분석 할 수 없습니다.

분류에서Dev

Postcss-색상 함수 플러그인- "문자열에서 색상을 구문 분석 할 수 없음"

분류에서Dev

tableView가 웹에서 구문 분석 된 데이터를 json 형식으로 표시 할 수 없습니다.

분류에서Dev

문자열에서 DATETIME으로 DataTime을 구문 분석 할 수 없습니다.

분류에서Dev

문자열에서 축약 된 요일 이름을 구문 분석 할 수 없습니다.

분류에서Dev

Android : 시작 4에서 구문 분석 할 수없는 날짜

분류에서Dev

자바 스크립트는 자바에서 Gson으로 직렬화 된 문자열을 구문 분석 할 수 없습니다.

분류에서Dev

중첩 된 따옴표가있는 명령 문자열을 인수 및 플래그로 구문 분석

분류에서Dev

잠재적으로 인용 될 수있는 검색어 줄을 어떻게 구문 분석 할 수 있으며, 이러한 검색어를 사용하여 각 검색어가 모두 포함 된 입력 줄을 일치시킬 수 있습니까?

분류에서Dev

숫자가 포함 된 문자열을 정수 배열로 구문 분석

분류에서Dev

C에서 하위 문자열을 수행하는 함수를 사용할 때 문자열 구문 분석이 실패합니다.

분류에서Dev

Curl 함수는 bash의 변수에서 오는 프록시를 구문 분석 할 수 없습니다.

분류에서Dev

WordPress UI에서 json 문자열을 구문 분석 할 수 없습니다.

분류에서Dev

Brightscript에서 xml 문자열을 구문 분석 할 수 없습니다.

분류에서Dev

함수 QUERY 매개 변수에 대한 쿼리 문자열을 구문 분석 할 수 없습니다.

분류에서Dev

MySQL IN 문의 값으로 열에서 쉼표로 구분 된 문자열을 어떻게 사용할 수 있습니까?

분류에서Dev

Eval을 사용하는 ASP.net은 쉼표로 구분 된 문자열을 인수로 전달합니다.

분류에서Dev

텍스트에서 읽은 실제 숫자 문자열을 java의 Integer.valueOf () 메소드로 구문 분석 할 수없는 이유는 무엇입니까?

분류에서Dev

인식 할 수없는 필드, 무시할 수있는 것으로 표시되지 않음, json 문자열 구문 분석시

분류에서Dev

함수가 포함 된 JSON 문자열을 어떻게 구문 분석 할 수 있습니까?

Related 관련 기사

  1. 1

    vim에서 강조 표시 : 주석 구분 기호 다음에 특수 문자열이있는 줄 구분

  2. 2

    함수 호출시 문자열로 구문 분석 된 배열

  3. 3

    준비된 SQL 문을 사용하는 PHP 함수-implode를 사용하여 함수에 대한 인수로 쉼표로 구분 된 배열 값 입력

  4. 4

    점으로 구분 된 문자열을 사전 변수로 구문 분석

  5. 5

    C ++에서 쉼표로 구분 된 변수 구문 분석

  6. 6

    배열 내에서 문자열 화 된 배열을 구문 분석 할 수 없습니다.

  7. 7

    stdin에서 부동 소수점으로 문자열을 구문 분석 할 수 없음-Rust

  8. 8

    INDEX 함수 Google 시트에서 문자열을 구문 분석하는 방법

  9. 9

    Spring Boot 2에서 인용 된 문자열을 JSON으로 포함하는 요청 본문 구문 분석

  10. 10

    REGEX를 사용하여 Java에서 점이있는 문자열을 구문 분석 할 수 없습니다.

  11. 11

    Postcss-색상 함수 플러그인- "문자열에서 색상을 구문 분석 할 수 없음"

  12. 12

    tableView가 웹에서 구문 분석 된 데이터를 json 형식으로 표시 할 수 없습니다.

  13. 13

    문자열에서 DATETIME으로 DataTime을 구문 분석 할 수 없습니다.

  14. 14

    문자열에서 축약 된 요일 이름을 구문 분석 할 수 없습니다.

  15. 15

    Android : 시작 4에서 구문 분석 할 수없는 날짜

  16. 16

    자바 스크립트는 자바에서 Gson으로 직렬화 된 문자열을 구문 분석 할 수 없습니다.

  17. 17

    중첩 된 따옴표가있는 명령 문자열을 인수 및 플래그로 구문 분석

  18. 18

    잠재적으로 인용 될 수있는 검색어 줄을 어떻게 구문 분석 할 수 있으며, 이러한 검색어를 사용하여 각 검색어가 모두 포함 된 입력 줄을 일치시킬 수 있습니까?

  19. 19

    숫자가 포함 된 문자열을 정수 배열로 구문 분석

  20. 20

    C에서 하위 문자열을 수행하는 함수를 사용할 때 문자열 구문 분석이 실패합니다.

  21. 21

    Curl 함수는 bash의 변수에서 오는 프록시를 구문 분석 할 수 없습니다.

  22. 22

    WordPress UI에서 json 문자열을 구문 분석 할 수 없습니다.

  23. 23

    Brightscript에서 xml 문자열을 구문 분석 할 수 없습니다.

  24. 24

    함수 QUERY 매개 변수에 대한 쿼리 문자열을 구문 분석 할 수 없습니다.

  25. 25

    MySQL IN 문의 값으로 열에서 쉼표로 구분 된 문자열을 어떻게 사용할 수 있습니까?

  26. 26

    Eval을 사용하는 ASP.net은 쉼표로 구분 된 문자열을 인수로 전달합니다.

  27. 27

    텍스트에서 읽은 실제 숫자 문자열을 java의 Integer.valueOf () 메소드로 구문 분석 할 수없는 이유는 무엇입니까?

  28. 28

    인식 할 수없는 필드, 무시할 수있는 것으로 표시되지 않음, json 문자열 구문 분석시

  29. 29

    함수가 포함 된 JSON 문자열을 어떻게 구문 분석 할 수 있습니까?

뜨겁다태그

보관