javascript - 用 JS 中的变量控制 SVG 矩形的高度和宽度
问题描述
我需要根据 JavaScript 中的可变高度和宽度创建矩形。这是原始代码 https://www.w3schools.com/graphics/tryit.asp?filename=trysvg_rect
我试图修改可变高度,但它不起作用
<!DOCTYPE html>
<html>
<body>
<script>
var h=50
<svg width="400" height="110">
<rect width="300" height=`${h}` style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
Sorry, your browser does not support inline SVG.
</svg>
</script>
</body>
</html>
我尝试了其他变体+ h +
,${h}
但没有一个有效,矩形没有显示
解决方案
该语法无效。
有多种方法可以做到这一点。
您可以动态innerHTML
设置body
using template literals
:
<!DOCTYPE html>
<html>
<body>
<script>
var h = 50;
document.body.innerHTML += `
<svg width="400" height="110">
<rect width="300" height=${h} style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
Sorry, your browser does not support inline SVG.
</svg>
`;
</script>
</body>
</html>
或者您可以给rect
元素一个 id 并使用它setAttribute
来设置的height
属性rect
:
<!DOCTYPE html>
<html>
<body>
<svg width="400" height="110">
<rect id="rect" width="300" height="300" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
Sorry, your browser does not support inline SVG.
</svg>
<script>
document.getElementById("rect").setAttribute("height", 50);
</script>
</body>
</html>
还有很多模板引擎可以让您以更具声明性的方式执行此操作,但这些引擎太多了,无法在此一一提及,因此如果您有兴趣,可以在 Google 上搜索。
更新
基于事件触发属性变化:
<!DOCTYPE html>
<html>
<body>
<svg width="400" height="110">
<rect id="rect" width="300" height="300" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
Sorry, your browser does not support inline SVG.
</svg>
<script>
const rect = document.getElementById("rect");
rect.onmouseover = function () {
rect.setAttribute("height", 50);
};
</script>
</body>
</html>
推荐阅读
- asp.net-core - ASP.NET CORE LINUX 获取 CPU 使用率
- python - 如何在Python中所有出现特定模式的数据框中拆分字符串
- python - SublimeREPL FileNotFoundError(2, "没有这样的文件或目录:'python'")
- visual-studio-code - 当命令由快捷方式而不是上下文菜单触发时,在扩展中获取焦点资源管理器文件夹或文件
- javascript - 在 Object of objects JS 中搜索和查找(不在对象数组中)
- asp.net-web-api - ASP.NET Web API:请求的资源上不存在“Access-Control-Allow-Origin”标头
- python - 如何从 C++ 中的 pandas Timestamp 对象中提取年/小时/日数据?
- reactjs - 使用 GatsbyJS 和 Material-UI 重新加载页面时样式消失
- flutter - Flutter:在 null 上调用了方法“[]”
- c# - 如何使用 C# 中的 ValueType 参数调用 C++/Cli 函数