我将尝试在Javascript中执行一个简单的搜索和高亮功能,以搜索一段文字。该文本所在的XHTML标记也作为参数给出,以帮助定位该文本。
我正在测试此功能的XHTML如下:
在 searcher.js 中的函数 searcher:
然而,执行
一个观察结果:
1. 如果我将
我的问题是:
1. 可以用
2. 上述观察结果是一致的(每次调用
3. 是
我正在测试此功能的XHTML如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta content="application/xml+xhtml;charset=UTF-8" />
<script src="searcher.js" type="text/javascript"></script>
<script src="jquery-2.0.2.min.js"> </script>
<title>Building your resume</title>
</head>
<body id="highlightbegin">
<h1>Building your resume</h1>
<div> <input name="input" type="button" value="Highlight3" onclick="javascript:searcher('<h1>','Building your resume', '<h1>Building your resume', 'resume');" /> </div>
</body>
</html>
在 searcher.js 中的函数 searcher:
function searcher(tag, text, tagText, word) {
//simple search.
console.info(word + " to be searched for in " + text + " with tag text = " + tagText);
//get old html.
var oldHTML = document.getElementById("highlightbegin").innerHTML;
//get regexp.
var regexp = new RegExp(tagText, 'g');
var match = oldHTML.match(regexp);
console.info(text + " found " + match.length + " times.");
}
然而,执行
RegExp
时,匹配返回null
。进一步调查发现,标签<h1>Building your resume</h1>
变成了<h1 xmlns="http://www.w3.org/1999/xhtml">Building your resume</h1>
,这导致match
函数返回null
。我的问题是:
- 为什么会自动添加
xmlns
属性? - 有没有办法防止该属性被添加?
- 该属性会添加到哪些标签中?可以假设它会添加到每个标签吗?
- 这是一个特定于浏览器的问题,还是所有浏览器都会出现这种行为?
一个观察结果:
1. 如果我将
xmlns
属性添加到标签中,并使用outerHTML
访问所有内容(var oldHTML = document.getElementById("highlightbegin").outerHTML;
),则其子元素不具有xmlns
属性。我的问题是:
1. 可以用
Javascript
编辑并替换outerHTML元素吗?2. 上述观察结果是一致的(每次调用
outerHTML
时都会看到)还是实现有关?3. 是
Javascript
自动添加xmlns
属性还是浏览器?
<!DOCTYPE html>
,那么我相信这将改善行为。 - Daniel Gimenez