获取Range对象中标记的className
Get the className of the tag within a Range object
我有两个自定义上下文菜单(一个是我写的,另一个已经存在)。只有当一个单词因为写得不好而被下划线时,我的单词才会出现,而另一个单词会出现在表上,这样用户就可以选择从表中添加另一行或删除一行。
我遇到的问题是,如果表中有错误,而你想纠正它,处理表的人会阻止我执行
对于这个contextMenu,他们编写它是为了从右键单击的地方获得一个范围对象。
document.oncontextmenu = elementSelect;
function elementSelect(){
Rng = document.selection.createRange();
}
我试图在range对象中获取标记的className,因此如果它与错误标记中的类(class="error"的span)匹配,我会在contextMenu中为该表返回一个简单的值,这样它就不会触发。
var rngClassName = Rng(0).getAttribute("class").value;
alert("class =>" + rngClassName);
if(rngClassName == "error")
{
return;
}
Rng(0)在几次之后用于检索somme属性并对其进行良好的工作。但是,获取类值似乎不起作用,没有返回值,脚本在var rngClassName = Rng(0).getAttribute("class").value;
行停止执行,调试也没有返回错误(IE中的F12)。
这是我第一次使用Range对象,所以我想我错过了什么,但不知道是什么。
规格:IE5,香草Javascript。
尝试使用element.classList.
使用以下方法:classList.add()、classList.remove()、classList.contains()
编辑:我现在看到你的评论,下面的内容在IE5中不起作用…
但如果我正确理解你的问题,你想在选择中检查元素的类吗?我没有IE5,所以我在11和Chrome中查看了它。你可以试试这样的东西:
var selection = document.getSelection();
var selRange = selection.getRangeAt(0);
var parentNode = selRange.startContainer.parentNode;
var hasError = parentNode.classList.contains('error');
演示:https://jsfiddle.net/spdwn7bo/1/(在2秒内选择文本:))
- 绑定Range输入以修改样式
- 使用JavaScript,如何获得具有特定className的元素's通过使用getElementByClass
- 为什么document.getElementsByClassName(“className”)返回对象
- 关于使用.className的建议,目前还没有;我不能在我的圈子里工作
- 可以通过ClassName在多个画布上绘制
- 如何删除用Range.setStart/setEnd选择的字符
- 为什么设置 element.className = null 会导致 class=“null”
- DOJO声明中可选className参数的用途是什么
- getelementbyid and tagname and classname
- 我的javascript有什么问题?.className
- 如何在使用angular ui ace时获得Range
- 在内联元素中使用range.expand('word')时,range的boundingClientRe
- jQuery(document).on('click.classname'.......)?
- javascript className函数存在问题
- 如何在ReactJS中添加或删除事件上的className
- 使用Protractor通过className定位按钮
- javascript getElementById(myvarnotwork,但字符串为yes).className
- 尝试通过className获取元素;似乎不起作用
- 获取Range对象中标记的className
- Range.deserializeSelection校验和错误