无法通过下拉菜单获取 select 标签的值

Having trouble grabbing value of select tag with dropdown

我已经使用 FabricJS 几天了,我在获取下拉菜单的值时遇到了问题,因此我可以通过“点击”事件监听器正确应用所需的形状。所以当我点击下拉菜单和 select“矩形”并点击按钮,它应该生成一个矩形。这是我的代码:

HTML:

   <p>Choose a Shape</p>

<select id="shapesId">
    <option value="square">Square</option>
    <option value="rectangle">Rectangle</option>
    <option value="triangle">Triangle</option>
    <option value="circle">Circle</option>
    <option value="polygon">Polygon</option>
    <option value="ellipse">Ellipse</option>
    <option value="line">Line</option>
</select>

<button id="realShapes">Go!</button>

所以当我们点击“开始!”我想通过形状选项获得 selected 的任何值。 现在这是我的 Javascript:

const shapes = document.getElementById("shapesId");
const e = shapes.value;
const clickShapes = document.getElementById("realShapes");
clickShapes.addEventListener("click", () => {
    
    if(e === "Rectangle") {
      const rect = new fabric.Rect({
        left: 100,
        top: 100,
        fill: 'black',
        width: 70,
        height: 70,
        angle: 45
    });
    canvas.add(rect);
    }
    
    canvas.renderAll();
})

我现在很迷茫,几个小时以来一直在努力解决这个问题,如有任何帮助,我们将不胜感激。感谢阅读本文的人!

尝试使用它来获取所选的 shapesid 值(会将值存储到 xvalue):

var xvalue  = document.getElementById("shapesId").options[document.getElementById("shapesId").selectedIndex].value;

附加信息(您可以使用以下内容作为可行示例):

<canvas id="myCanvas" width="400" height="400"
style="border:1px solid #ff0000;">
</canvas>

<br>

<p>Choose a Shape</p>

<select id="shapesId">
    <option value="">Please select</option>
    <option value="rectangle">rectangle</option>
    <option value="circle">circle</option>
</select>

<input type=button value="DRAW" onclick="javascript:draw();">





<script>

function draw() {

var xvalue  = document.getElementById("shapesId").options[document.getElementById("shapesId").selectedIndex].value;

if (xvalue=="rectangle")  {

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");
ctx.clearRect(0, 0, 400, 400);


var ctx = c.getContext("2d");
//ctx.clearRect(0, 0, canvas.width, canvas.height);

ctx.beginPath();
ctx.rect(20, 20, 150, 100);
ctx.stroke();
}

if (xvalue=="circle")  {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.clearRect(0, 0, 400, 400);

var ctx = c.getContext("2d");
//ctx.clearRect(0, 0, canvas.width, canvas.height);

ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
}
}


</script>