gpt4 book ai didi

javascript - 搜索单词并为其着色

转载 作者:行者123 更新时间:2023-12-03 03:13:08 25 4
gpt4 key购买 nike

我正在尝试在 iframe 中搜索一个单词并使用 angularjs 和 jquery 为其着色。对于 jquery 代码,我从 @andrew stackoverflow 获得了帮助。 。 在 Jquery 代码中,如果条件存在, Controller 不会进入 if 条件。请帮我解决这个问题。

这是我的完整代码,其中包含 Angular 代码和jquery代码。

Angular 代码工作得很好,在控制台中我可以看到所有控制台,首先我解析数组并仅取出在 jquery 中搜索所需的字符串。之后我使用该搜索词在 iframe 中进行搜索。但我在 jquery 代码中遇到了一些问题。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html ng-app="app">

<head>
<title>
<%=t itle %>
</title>

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="http://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
</head>

<body>

<div ng-controller="ToddlerCtrl">
<h2>Sample</h2>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-animate.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-resource.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>
<script type="text/javascript" src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.13.3.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>


<iframe src="text.txt" id="myIframe"></iframe>

<script type="text/javascript">
var myApp = angular.module('app', []);

myApp.controller('ToddlerCtrl', function($scope) {

// Define an array of Toddler objects
$scope.toddlers = [
[100, ["sample"]],
[100, ["used"]],
[100, ["tag"]],
[33.33333333333334, ["file"]]
];

for (var key in $scope.toddlers) {

if ($scope.toddlers.hasOwnProperty(key)) {

var temp = JSON.stringify($scope.toddlers[key][1])
var final_string = temp.slice(2, -2);
var searchWord = final_string;
// console.log(searchWord)

$(document).ready(function() {
$('#myIframe').ready(function() {

var $html = $($('#myIframe').contents().find('body').html());
if ($html.contents().text().search(searchWord) != -1) {
// Some problem with the if condition i guess.
// Controller is not entering if condition.
var replaceWith = "<span style='color:red'>" + searchWord + "</span>"
var newHTML = $html.text().replace(searchWord, replaceWith);
$('#myIframe').contents().find('body').html(newHTML);
}
});
});
// alert($scope.toddlers[key][1]);
// console.log("searchWord")
}
}


});

最佳答案

您可以使用 Jquery 轻松完成此操作,您可以在 Javascript 上使用此功能:

function findAndColorWord(html, word, color){
var indexWordStart = html.indexOf(word);
var wordLength = word.length;
var coloredWord = '<span style="color: '+color+'">'+word+'</span>';

var firstHtmlPart = html.substring(0, indexWordStart - 1);
var secondHtmlPart = html.substring(indexWordStart + wordLength, html.length - 1);

return firstHtmlPart + coloredWord + secondHtmlPart;
}

您只需要获取单词在 iframe 的 html 中的位置,可以使用 $("#id-of the iframe")[0].outerHTML 获取,并且在该位置插入带有单词颜色样式的 span 元素后。

我用 Div 制作了一个基本示例,其工作方式与 iframe 相同,您可以在此处查看示例:

https://jsfiddle.net/9zt976uz/2/#&togetherjs=nQoh3LINQG

关于javascript - 搜索单词并为其着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com