Javascript 在页面上使用文本字符串搜索功能,有没有办法让搜索忽略特定的div?
这是我的搜索功能,对于我的目的来说效果很好Javascript 在页面上使用文本字符串搜索功能,有没有办法让搜索忽略特定的div?,javascript,html,jquery,dom,search,Javascript,Html,Jquery,Dom,Search,这是我的搜索功能,对于我的目的来说效果很好 var TRange = null; function findString(str) { if (parseInt(navigator.appVersion) < 4) return; var strFound; if (window.find) { // CODE FOR BROWSERS THAT SUPPORT window.find strFound = self
var TRange = null;
function findString(str) {
if (parseInt(navigator.appVersion) < 4) return;
var strFound;
if (window.find) {
// CODE FOR BROWSERS THAT SUPPORT window.find
strFound = self.find(str);
if (strFound && self.getSelection && !self.getSelection().anchorNode) {
strFound = self.find(str)
}
if (!strFound) {
strFound = self.find(str, 0, 1)
while (self.find(str, 0, 1)) continue
}
} else if (navigator.appName.indexOf("Microsoft") != -1) {
// EXPLORER-SPECIFIC CODE
if (TRange != null) {
TRange.collapse(false)
strFound = TRange.findText(str)
if (strFound) TRange.select()
}
if (TRange == null || strFound == 0) {
TRange = self.document.body.createTextRange()
strFound = TRange.findText(str)
if (strFound) TRange.select()
}
} else if (navigator.appName == "Opera") {
alert("Opera browsers not supported, sorry...")
return;
}
if (!strFound) alert("String '" + str + "' not found!")
return;
};
document.getElementById('f1').onsubmit = function() {
const marquee = document.querySelector('#marquee');
let innerHTML = marquee.innerHTML;
marquee.innerHTML = '';
let found = findString(this.t1.value);
marquee.innerHTML = innerHTML;
return false;
};
一个有点骇人的想法,但可能在您的情况下会起作用,就是删除div的innerHTML,进行查找,然后再次放回innerHTML。这可能取决于具体结构是否安全
const marquee = document.querySelector('#marquee');
let innerHTML = marquee.innerHTML;
marquee.innerHTML = '';
let found = findString('whatever');
marquee.innerHTML = innerHTML;
当然,最好是找出为什么搜索框中的字符串会锁定并解决问题。如果有帮助,请检查此项-您可以删除框中的innerHTML,进行查找,然后再将其放回吗?@AHaworth您是什么意思?我会将其放在答案中,以便您可以看到代码,但我不确定它在一般情况下的效果。@AHaworth我会继续,在我的问题中添加字幕代码,这样你就可以看到我是如何处理的。这会在我的代码中出现在哪里?你在哪里调用findString。哦,天哪,我找到了,谢谢!现在可以了!
"use strict";
function tick() {
const element = /*#__PURE__*/React.createElement("marquee", {
behavior: "scroll",
bgcolor: "lightyellow",
loop: "-1",
width: "700px"
}, " ", /*#__PURE__*/React.createElement("font", {
color: "blue"
}, " ", /*#__PURE__*/React.createElement("strong", null, "Today is: ", new Date().toDateString(), " and the current time is: ", new Date().toLocaleTimeString(), " "), " "), " ");
ReactDOM.render(element, document.getElementById("marquee"));
}
setInterval(tick, 1000);
const marquee = document.querySelector('#marquee');
let innerHTML = marquee.innerHTML;
marquee.innerHTML = '';
let found = findString('whatever');
marquee.innerHTML = innerHTML;