假设我有这个,
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)?
答案 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的方法有很多,例如closest
,find
,parent
,filter
等等。只需应用您需要的内容即可。
答案 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>
的一部分。