javascript - 如何使用 JavaScript 将文本菜单链接更改为图像?
问题描述
我有一个需要用图像替换的菜单链接,我现在正试图通过使用控制台来做到这一点。
我一直在尝试使用的代码是这样的:
(document.getElementsByClassName("sub-menu-content"), {
onrendered: function(canvas) {
var screenshot = canvas.toDataURL("http://prototypes.example.com/test/MW/long-logo.png");
document.getElementsByClassName("sub-menu-content").setAttribute("src", screenshot);
}
});
<ul class="main-sub-menu content-width">
<li class="sub-menu-content">
<a href="http://www.example.net/currency-forecast-tool" target="">Currency forecast tool
</a>
</li>
</ul>
该代码不会引发任何错误,但什么也不做。有任何想法吗?
解决方案
Ali
没有src
属性,分配它一个不会使其成为img
你可以给它分配background-image
一个
(document.getElementsByClassName("sub-menu-content"), {
onrendered: function(canvas) {
var screenshot = canvas.toDataURL("http://prototypes.example.com/test/MW/long-logo.png");
document.getElementsByClassName("sub-menu-content")[0].style.backgroundImage = 'url(' + screenshot + ')');
}
});
附带说明一下,getElementsByClassName()
返回元素的集合,您需要类似的东西document.getElementsByClassName("sub-menu-content")[0]
来定位特定元素。建议改为使用querySelector
,如
(document.querySelector("sub-menu-content"), {
onrendered: function(canvas) {
var screenshot = canvas.toDataURL("http://prototypes.example.com/test/MW/long-logo.png");
document.querySelector("sub-menu-content").style.backgroundImage = 'url(' + screenshot + ')');
}
});
如果你需要一个img
,你可以做这样的事情,使用,这将在锚内insertAdjacentHTML()
插入一个:img
a
var link = document.querySelector(".sub-menu-content a");
link.insertAdjacentHTML('afterbegin', '<img src="' + screenshot + '"/>');
一个DOMString表示相对于元素的位置;必须是以下字符串之一:
'beforebegin'
: 在元素本身之前。'afterbegin'
: 就在元素内部,在它的第一个子元素之前。'beforeend'
: 就在元素内部,在它的最后一个子元素之后。'afterend'
: 在元素本身之后。
或者使用替换锚的内容innerHTML
:
var link = document.querySelector(".sub-menu-content a");
link.innerHTML = '<img src="' + screenshot + '"/>';
根据评论更新,展示如何使用 CSS 选择器来查找特定元素
var screenshot = "http://placehold.it/200x100";
var link = document.querySelector(".sub-menu-content:nth-child(3) a");
link.innerHTML = '<img src="' + screenshot + '"/>';
<ul class="main-sub-menu content-width">
<li class="sub-menu-content">
<a href="http://www.example.net/currency-forecast-tool" target="">Currency forecast tool 1</a>
</li>
<li class="sub-menu-content">
<a href="http://www.example.net/currency-forecast-tool" target="">Currency forecast tool 2</a>
</li>
<li class="sub-menu-content">
<a href="http://www.example.net/currency-forecast-tool" target="">Currency forecast tool 3</a>
</li>
<li class="sub-menu-content">
<a href="http://www.example.net/currency-forecast-tool" target="">Currency forecast tool 4</a>
</li>
</ul>
推荐阅读
- javascript - 不使用模板引擎时如何在 Express.js 视图中包含 CSS 文件?
- scala - 如何使用 scala 方法创建文件?
- javascript - JS:函数未定义,无法创建 JSON 对象,因为 JS 无法识别键是字符串
- node.js - NestJS Swagger - 如何声明多选枚举字段?
- virtualbox - Minikube 与 Virtualbox 或 KVM 在 Centos 7 上使用大量 CPU
- javascript - 如何在我的 .js 文件中使用 npm 安装的包?
- python - 模块中的变量范围
- java - 如何强制 Red Hat OpenJDK 8 在 Windows 上像 AdoptOpenJDK 和 Oracle JDK 一样清晰地呈现字体?
- vba - 无法获取工作表函数类的 vlookup 属性?
- visual-studio - 我有一张图片 18F4550 如何读取超声波传感器的距离