在javaScript中通过DOM获取tagNames而不依赖于其他元素

时间:2015-01-24 14:55:50

标签: javascript jquery html domparser

假设我有这个,

var sampleString = "<username>user1</username><password>userpassword</password><age>21</age><sex>male</sex>";

我通过DOM解析器传递它来填充html表单中的数据。 我用这个作为参考。 http://xmljs.sourceforge.net/website/sampleApplications-w3cdom.html

但是在这个DOM解析器中

docRef.txtFirstName.value = trim(user.getElementsByTagName("FIRSTNAME").item(0).getFirstChild().getNodeValue(),true, true);

编辑:在访问上述代码之前将其转换为DOM。它通过逐个获取关于tagNames的值来填充html表单中的数据,但我需要一个静态方法,可用于填充不同的表单,例如同时获取tagNames和值。

他们通过tagName获取元素,并按相应的id填充表单。但我的申请表中有很多表格。我认为为每个表单编辑上面的代码不是一个好选择。我在网上搜索getTagnames,但它们都是指从元素中获取标记名称等等。我找不到任何与javascript中的var中的Tagnames相关的内容。是否有可能从var获取tagName(在最后一个过程中它是一个DOM)?

2 个答案:

答案 0 :(得分:1)

您可以使用jQuery的原始函数然后解析它。 jQuery函数采用格式良好的html字符串并返回一个jQuery对象,该对象具有filter

传递给filter的参数可以是css选择器。

var sampleString = "<username>user1</username><password>userpassword</password><age>21</age><sex>male</sex>";
$(sampleString).filter('username').text(); // user1

在jQuery中横转DOM的方法有很多,例如closestfindparentfilter等等。只需应用您需要的内容即可。

答案 1 :(得分:1)

我不会使用$.parseHTML(sampleString)$(sampleString)来解析无效的html数据。未来的html版本可能未定义结果。

相反,我会确保您的sampleString是一个有效的xml结构(在根目录中只有一个元素):

var sampleString = "<info><username>user1</username><password>userpassword</password><age>21</age><sex>male</sex></info>";

使用jQuery.parseXML()解析它。 您可以在该结果上使用正常的jQuery DOM-Traversing。

var doc = $( jQuery.parseXML(sampleString) );
doc.find('username').text();

说明html5新增的html标记的问题。 假设您要将信息来源添加到您可能使用<source>作为标记的数据中。

var sampleString = '<username>user1</username><password>userpassword</password><age>21</age><sex>male</sex><source>form somewhere</source>';

如果您使用$.parseHTML(sampleString)$(sampleString),则会产生:

[<username>user1</username>, <password>userpassword</password>, <age>21</age><sex>male</sex>, <source>, "from somewhere"]

正如您所见,"from somewhere"不再是<source>的一部分。