Javascript 函数无法使用从地址栏解析的字符串作为参数

Javascript 函数无法使用从地址栏解析的字符串作为参数,javascript,html,Javascript,Html,我正在重建一个网站,其中包含了战斗游戏Tekken7中人物的基本介绍。我已将所有字符及其数据存储为对象,并设置了一个函数在网页上显示字符的数据,接受该字符的名称作为其唯一参数 /* DECLARATIONS */ // Profile let charName = document.getElementById("char-name"); let charNickname = document.getElementById("nickname"); le

我正在重建一个网站,其中包含了战斗游戏Tekken7中人物的基本介绍。我已将所有字符及其数据存储为对象,并设置了一个函数在网页上显示字符的数据,接受该字符的名称作为其唯一参数

/* 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);
/*声明*/
//侧面图
让charName=document.getElementById(“char name”);
让char昵称=document.getElementById(“昵称”);
让charFlag=document.getElementById(“flag”);
让charImg=document.getElementById(“图像”);
让charAge=document.getElementById(“年龄”);
让charCountry=document.getElementById(“国家”);
让charFightingStyle=document.getElementById(“战斗风格”);
让chardefinish=document.getElementById(“第一次出现”);
//得分
让charoffence=document.getElementById(“offence”);
让charDefence=document.getElementById(“defence”);
让charRange=document.getElementById(“range”);
让charpustion=document.getElementById(“惩罚”);
让charGimmicks=document.getElementById(“gimmicks”);
让charExecution=document.getElementById(“执行”);
让charHurtbox=document.getElementById(“hurtbox”);
//游戏风格与介绍
让charPlaystyle=document.getElementById(“playstyle”);
让charIntro=document.getElementById(“简介”);
/*显示功能*/
常量显示=字符=>{
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;
chardefinish.innerHTML=character.definish;
charoffence.innerHTML=character.offence;
charDefence.innerHTML=character.defence;
charRange.innerHTML=character.range;
charpopulation.innerHTML=character.population;
charGimmicks.innerHTML=character.gimmicks;
charExecution.innerHTML=character.execution;
charHurtbox.innerHTML=character.hurtbox;
charPlaystyle.innerHTML=character.playstyle;
charIntro.innerHTML=character.introduction;
}
/*字符示例*/
//金卡萨马
金警官={
//侧面图
姓名:“金卡萨马”,
绰号:“命运之子”,
标志:“../img/flagicons/japan.svg”,
图片:“../img/characters/jin.png”,
年龄:21岁,
国家:“日本”,
格斗风格:“传统空手道”,
首次亮相:“铁拳3”,
//得分
罪行:9,
答辩:10,
范围:8,
惩罚:8,
手法:3,,
执行:3,
邮箱:3,
//游戏风格
游戏风格:“多才多艺,远离尘嚣,三岛”,
简介:“多才多艺的角色,在中程发挥最佳,拥有良好的戳击、强大的反击工具、强大的伤害输出、多样的投掷和独特的招架,可处理除射弹(火球)以外的所有高、中击。虽然他的三岛风格的工具不如三岛中那些不折不扣的角色那么有效,但他用其他情境动作来弥补这些弱点。然而,他确实在一些关键的惩罚者身上缺乏射程。

“, }; /*调用显示功能*/ 让params=(新URL(document.location)).searchParams; 让char=params.get(“视图”); 显示(字符);
代码从地址栏中解析出“view”参数,并将其作为参数返回给函数。例如,如果地址栏有URL
../guides/character.html?view=jin
,则理想情况下,代码应该解析
jin
值,并将其作为参数传递回函数。我甚至用
console.log
测试了
char
参数,以查看该值是否在没有任何问题的情况下被传递,并按预期打印了
jin

但是,当代码自行运行时,它不知何故无法使用该值作为参数,而是传回一个未定义的对象,控制台显示错误消息
GET[file path]/guides/undefined net::ERR\u file\u NOT\u FOUND
as

有人能帮我理解为什么会这样吗?我仍在学习JavaScript的一些内部工作原理,因此我完全被难住了。

您很快就可以正确地理解这一点了。我相信您面临的问题是,您希望字符串
“jin”
引用您的
常量
jin
。然而,JS渲染引擎的工作原理并非如此——
“jin”
的字符串被简单地作为字符串传递,这就是为什么所有值都显示为未定义的——因为字符串
“jin”
没有您要查找的属性

这将记录传递的字符串
“jin”
,然后记录几个
未定义的

const jin={
//侧面图
姓名:“金卡萨马”,
绰号:“命运之子”,
标志:“../img/flagicons/japan.svg”,
图片:“../img/characters/jin.png”,
年龄:21岁,
国家:“日本”,
格斗风格:“传统空手道”,
首次亮相:“铁拳3”,
//得分
罪行:9,
答辩:10,
范围:8,
惩罚:8,
手法:3,,
执行:3,
邮箱:3,
//游戏风格
游戏风格:“多才多艺,远离尘嚣,三岛”,
简介:“多才多艺的角色,在中程发挥最佳,拥有良好的戳击、强大的反击工具、强大的伤害输出、多样的投掷和独特的招架,可处理除射弹(火球)以外的所有高、中击。虽然他的三岛风格的工具不如三岛中那些不折不扣的角色那么有效,但他用其他情境动作来弥补这些弱点。然而,他确实在一些关键的惩罚者身上缺乏射程。

“, }; 常量显示=字符=>{ console.log(字符); console.log(character.name); console.log(字符、昵称); console.log(character.flag); 安慰