我需要找到单选按钮,文本和选择的输入类型.很容易找到任何东西的输入类型,<input type="x">因为它$(this).attr("type")会返回x
我的问题是我需要支持<select>没有type属性的元素.最终目标是返回收音机,文本或选择.
我想过做这样的事情,但我很好奇是否有更好的方法:
if ($(this).tagName == "input") {
var result = $(this).attr("type"); //returns radio or text (the attr type)
} else {
var result = $(this).tagName; //returns select (the element type)
}
Run Code Online (Sandbox Code Playgroud)
谢谢大家!
是否有一种简单的方法可以循环遍历所有td标记并将其更改为th?(等等).
我目前的方法是用th包装然后删除td,但后来我失去了其他属性等.
例如,如果我们有
<html>
<head>
<title>FooBar</title>
</head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果我们这样做document.getElementByTagName("title").TagName,那么我们将TITLE(大写).虽然html标准建议用小写编写html标签.
我知道两者之间没有关系,但这仍然没有意义.
DOM是否应该以大写形式返回标记名称?
我在使用selenium进行测试时使用了大部分元素定位器,但使用频率非常低的'TagName'定位器.请举例说明.
我有一些历史改写要做,我现在想保持原始树完好无损.然而,重写的树应该复制先前使用的标签.是否有比使用分支名称添加标签名称更少的手动选项?
如上所述,我需要使用库获取文件中的XML标记列表xml.etree.ElementTree.
我知道有类似的属性和方法ETVar.child, ETVar.getroot(), ETVar.tag, ETVar.attrib.
但是为了能够使用它们并至少获得2级标签的名称,我不得不使用嵌套的.
目前我有类似的东西
for xmlChild in xmlRootTag:
if xmlChild.tag:
print(xmlChild.tag)
Run Code Online (Sandbox Code Playgroud)
目标是在文件中获取所有,甚至深度嵌套的XML标记的列表,从而消除重复.
为了更好的想法,我添加了可能的XML代码示例:
<root>
<firstLevel>
<secondlevel level="2">
<thirdlevel>
<fourth>text</fourth>
<fourth2>text</fourth>
</thirdlevel>
</secondlevel>
</firstlevel>
</root>
Run Code Online (Sandbox Code Playgroud) 我试图使用lxml.etree从JSON对象创建一个xml树.一些标记名在其中继续冒号如下: -
'设置:当前'我尝试过使用
'{settings} current'作为标签名称,但我得到了: -
ns0:当前xmlns:ns0 ="设置"
我有一个XML文件,其中一些子标记(子节点元素)是可选的.例如
<part>
<note>
</rest>
</note>
<note>
<pitch></pitch>
</note>
<note>
<pitch></pitch>
</note>
</part>
Run Code Online (Sandbox Code Playgroud)
但是当我通过标签读取XML文件时,它会抛出NullPointerException - 因为一些子标签是可选的(例如上面的例子中的休息和音调).我怎样才能过滤掉这个?我无法找到任何方法来查找特定标记名称是否存在元素.即使我有条件检查getElementsByTagName("tag-name")方法是否返回NULL - 仍然它进入条件体并显然抛出异常.我怎么解决这个问题?
java代码是:
if(fstelm_Note.getElementsByTagName("rest")!=null){
if(fstelm_Note.getElementsByTagName("rest")==null){
break;
}
NodeList restElmLst = fstelm_Note.getElementsByTagName("rest");
Element restElm = (Element)restElmLst.item(0);
NodeList rest = restElm.getChildNodes();
String restVal = ((Node)rest.item(0)).getNodeValue().toString();
}else if(fstelm_Note.getElementsByTagName("note")!=null){
if(fstelm_Note.getElementsByTagName("note")==null){
break;
}
NodeList noteElmLst = fstelm_Note.getElementsByTagName("note");
Element noteElm = (Element)noteElmLst.item(0);
NodeList note = noteElm.getChildNodes();
String noteVal = ((Node)note.item(0)).getNodeValue().toString();
}
Run Code Online (Sandbox Code Playgroud)
任何见解或建议都表示赞赏.提前致谢.
今天我遇到了这个问题,它让我很烦恼......我正在维护一个JS项目并且有一条线:
node.tagName
Run Code Online (Sandbox Code Playgroud)
哪里node.nodeType是1.显然代码想要获取此元素的标记名称,它似乎适用于99.99%的网页...
可悲的是,当我在http://codeforces.com/problemset/problem/377/D上执行脚本时,它不起作用.原因是存在form具有属性的子节点的元素name="tagName".

的子节点form谁拥有财产性要素name可以像访问:node.NAME_VALUE(参考),所以node.tagName会得到其孩子的名字属性tagName,而不是节点的标签名称form.
有没有人遇到过这个问题?除了检查节点是否存在之外,还有其他解决方案form吗?
编辑1:
我在这里为jQuery解决了一个bug .我之所以这样做是因为jQuery可能更容易.prop("tagName")解决这个问题,而不是让所有浏览器解决这个问题.
顺便说一句,我认为任何人都不应使用类似tagName或nodeName作为HTMLInputElement的name价值.
为什么JavaScript中的tagName方法以大写字母返回HTML标记?HTML标签应该用小写字母书写.