为工具提示更改动态生成的html元素的title属性
Change title attribute of dynamically generated html element for tooltip
我有一个动态生成的HTML元素,其中包含一个title属性,该属性在悬停时出现在工具提示中,如:
<div title="tooltip text" class="classname" id="identifier"></div>
我想改变标题属性的内容使用javascript代码集运行作为HTML渲染的一部分。目前,我的代码如下:
var changeTooltip = function(){
var TooltipElement = document.getElementsByClassName("classname");
if (TooltipElement.title = "tooltip text"){
TooltipElement.title = "new message";
};
};
window.onload = changeTooltip();
在页面完全呈现后,此代码将原始字符串保留在div的title属性中。谁能解释一下原因,并指出正确的方法?注意,我必须使用JS,我不能使用JQuery。
getElementsByClassName()
(注意复数Elements)返回元素的列表。循环通过:
var changeTooltip = function(){
var TooltipElements = document.getElementsByClassName("classname");
for ( var i = 0; i < TooltipElements.length; ++i )
{
var TooltipElement = TooltipElements[i];
if (TooltipElement.title == "tooltip text")
TooltipElement.title = "new message";
};
};
changeTooltip();
.classname:after {
content: attr(title);
font-style: italic;
}
<div title="tooltip text" class="classname" id="identifier">Title: </div>
<div title="other text" class="classname" id="identifier2">Title: </div>
最后,您需要更改:
window.onload = changeTooltip();
window.onload = changeTooltip;
原因是,正如函数名所暗示的,getElementsByClassName
返回元素S的列表,而不是单个元素。如果您知道要修改的特定元素(div元素)是第一个/唯一符合条件的元素,则可以使用[0]
访问它。试一试:
var TooltipElement = document.getElementsByClassName("classname")[0];
此外,因为你的div有一个ID,你实际上最好使用:
var TooltipElement = document.getElementById("identifier");
当您针对单个特定元素时,总是更喜欢使用ID。它更简洁、准确,性能也更好。
参见工作示例:
var TooltipElement = document.getElementById("identifier");
TooltipElement.title = "new title";
<div title="tooltip text" class="classname" id="identifier">Some text</div>
相关文章:
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素