我在网页上有一组按钮标签,我想得到一个特定的按钮标签,它的innerText是“保存”。(它没有id。)所以我有这个代码
var tags = document.getElementsByTagName("button");
for (var i = 0; i < tags.length; i++) {
if (tags[i].innerText === 'Save') {
tags[i].click();
break;
}
}当我在chrome控制台中试用它时,它工作得非常好。但是我不能将它包含在我的jelly文件中(这是一个将被处理成html的xml标记;有点像jsp)。
问题出在for循环中的"<“运算符,它导致了这种情况
SAXParserException:“元素的内容必须由格式良好的字符数据或标记组成。”
我还学会了不对数组使用for..in循环。我能做什么?请给我一些建议。
发布于 2012-04-19 14:07:16
你解决了一个错误的问题。您的问题是“在XML中包含<字符会破坏XML”。您需要了解如何正确地包含这样的字符,而不是避免在数据中出现这样的字符。没有必要避免标准的for循环。
或者用CDATA标记(这使特殊字符( CDATA序列末尾除外)不再特殊)包装该节,或者在XML中用<表示<。
<![CDATA[
for (var i = 0; i < j; i++) {
etc(i);
}
]]>或
for (var i = 0; i < j; i++) {
etc(i);
}发布于 2012-04-19 14:08:18
您可以使用新的Array.forEach方法进行迭代,但它仅在JavaScript 1.6中可用:
var tags = Array.prototype.slice.call(document.getElementsByTagName("button"));
tags.forEach(function (tag) {
// ...
});但真正的解决方案是将您的代码放入<![CDATA[]]>
<code>
<![CDATA[
var tags = document.getElementsByTagName("button");
for (var i = 0; i < tags.length; i++) {
// ...
}
]]>
</code>发布于 2012-04-19 14:08:08
var limit = tags.length;
//loop until 0 (which is false)
while(limit) {
if (tags[tags.length-limit].innerText === 'Save') {
tags[tags.length-limit].click();
break;
}
limit--;
}https://stackoverflow.com/questions/10222476
复制相似问题