Javascript 如何根据下拉选择设置要更改的图像?

Javascript 如何根据下拉选择设置要更改的图像?,javascript,html,image,Javascript,Html,Image,我很抱歉,如果这个问题以前已经回答过,我已经尝试过搜索,但没有找到任何对我解决这个问题有帮助的东西。继续讨论这个问题 我正在尝试更新Roll20的社区角色表。该工作表同时使用HTLM和Javascript。我正在尝试设置表单,这样当玩家从D&D选择他正在使用的法术的力量类型时,它会在按钮上为该法术放置一个不同的图标 这些咒语包含在重复咒语容器的HTML按钮组件中,该容器用于为每个咒语创建新的、唯一的按钮 我能够成功地使图像成为静态图像,无论电源类型如何,都是相同的图像,但我不确定如何根据电源类型

我很抱歉,如果这个问题以前已经回答过,我已经尝试过搜索,但没有找到任何对我解决这个问题有帮助的东西。继续讨论这个问题

我正在尝试更新Roll20的社区角色表。该工作表同时使用HTLM和Javascript。我正在尝试设置表单,这样当玩家从D&D选择他正在使用的法术的力量类型时,它会在按钮上为该法术放置一个不同的图标

这些咒语包含在重复咒语容器的HTML按钮组件中,该容器用于为每个咒语创建新的、唯一的按钮

我能够成功地使图像成为静态图像,无论电源类型如何,都是相同的图像,但我不确定如何根据电源类型动态更改HTML img标记

我最近意识到,我设计这个角色表的网站不允许在img标签中使用id标志。我已编辑代码以显示更改。我目前正试图使用name=标志来实现这一点,我不确定jQuery是否找到了它,因为我没有得到返回的图像。这是我的img标签的当前代码:

<img name="powertype" src="#" style="width: 15px; height: 15px; padding: 2px;">

但是,当我设置了上述代码集时,它只返回一个带填充的空白图像。

您的JS中有一些语法错误-

第6行缺少起始引号:第10行缺少结束括号:

除此之外。。我为您简化了它:

$“拼写学校”。关于“更改”,functioneventinfo{ ifthis.value==biotic{ document.getElementByIdpowertype.src= https://n7.world/images/spells/biotic.svg; }否则,如果此值===战斗{ document.getElementByIdpowertype.src= https://n7.world/images/spells/combat.svg; }else if this.value==技术{ document.getElementByIdpowertype.src= https://n7.world/images/spells/tech.svg; }否则{ 回来 } }; 选择一个 生物的 搏斗 技术人员
我不能在一个如此简单的片段**中链接一个图像,但这里有一个香草味的解决方案,可以找到图像的路径。将img元素的src属性设置为pathSpan.innerHTML可以显示.png或.jpg,因此除非.svg的行为不同,否则这应该可以处理您的用例

const dropdown=document.getElementByIddropdown, pathSpan=document.getElementByIdimgPath; dropdown.addEventListenerchange,updateImage; 函数updateImageevent{ ifevent.target.value==1{ pathSpan.innerHTML=图像/一个; } else ifevent.target.value==2{ pathSpan.innerHTML=图像/2; } else ifevent.target.value==3{ pathSpan.innerHTML=图像/3; } 否则{ 路径span.innerHTML=; } } 1. 2. 3.
图像路径:images/one您也可以对Vanilla JS执行相同的操作

HTML:

还有一个更好的例子

const select = document.querySelector('#spellschool');
const img = document.querySelector('#powertype');

select.addEventListener('change', (e) => {

    img.src = `https://n7.world/images/spells/${e.target.value}.svg`

    console.log(e.target.value)
})

在这里,我们使用es6``backpacks将所选值变为字符串。

详细信息在演示中进行了注释。提到顺便说一句,属性id是JavaScript和DOM的一个基本方面,API不能轻易忽略它。我推测您试图将一个id分配给多个元素,因此您完全假设id不起作用。如果出于某种原因,您无法通过剪切和粘贴到您没有真正描述如何实现代码的内容中来实现它,请尝试将所有ID更改为名称。元素的一个优点是允许id和名称之间无缝关联,它们在表单中可以互换

//图像数组 常量符号=[ 'https://i.ibb.co/StzKvdm/8.gif', 'https://i.ibb.co/6Jtv9mK/nec.gif', 'https://i.ibb.co/6BMt5f9/inv.gif', 'https://i.ibb.co/FgznhXj/abj.gif', 'https://i.ibb.co/Jk6X5wk/div.gif', 'https://i.ibb.co/wwX9xz5/ill.gif', 'https://i.ibb.co/wKqcxxF/trn.gif', 'https://i.ibb.co/86gpFf1/cnj.gif', 'https://i.ibb.co/R6BRtn9/enc.gif' ]; //参考第页的第一个表格 const form=document.forms[0]; //收集所有输入、选择、按钮、字段集等。 const cast=form.elements; //参考选择 const schools=cast.schools; //将选择注册到更改事件-调用函数changeSymbol schools.onchange=变更符号; /**changeSymbolevent @参数:事件[对象]:默认事件.对象 随着select值的更改,它前面的元素的src也会更改。 //传递事件对象 //B获取event.target值并将其转换为实数 //C获取select前面的元素 //D将该元素的src更改为select值索引处符号数组中的url //E*将数据idx值也更改为select值的索引 //F端函数 */ 函数changeSymbolevent{//A const index=Numberevent.target.value;//B const images=event.target.nextElementSibling;//C images.src=符号[index];//D images.dataset.idx=index;//E*[可选] 返回false;//F } //注册表格以提交事件-呼叫f
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <select id='spellschool'>
        <option value="biotic">Biotic</option>
        <option value="combat">Combat</option>
        <option value="tech">Tech</option>
    </select>

    <img id="powertype" src="#" style="width: 150px; height: 150px; padding: 20px;">
    <script src="main.js"></script>
</body>
</html>
const select = document.querySelector('#spellschool');
const img = document.querySelector('#powertype');

select.addEventListener('change', () => {
    if (select.value === 'biotic') {
        img.src = 'https://n7.world/images/spells/biotic.svg'
    } else if (select.value === 'combat') {
        img.src = 'https://n7.world/images/spells/combat.svg'
    } else {
        img.src = 'https://n7.world/images/spells/tech.svg'
    }
})
const select = document.querySelector('#spellschool');
const img = document.querySelector('#powertype');

select.addEventListener('change', (e) => {

    img.src = `https://n7.world/images/spells/${e.target.value}.svg`

    console.log(e.target.value)
})