Php 添加不带跨距标记或标题的工具提示/气泡显示
当用户将鼠标悬停在某些文本/关键字上时,如何显示工具提示?该文本体直接从数据库中检索,因此我无法向这些关键字添加任何span或div标记或标题信息。是否有一种方法可以自动为页面中包含的某些单词创建工具提示 请告诉我是否有关于如何解决此问题的好教程。Php 添加不带跨距标记或标题的工具提示/气泡显示,php,javascript,mysql,tooltip,Php,Javascript,Mysql,Tooltip,当用户将鼠标悬停在某些文本/关键字上时,如何显示工具提示?该文本体直接从数据库中检索,因此我无法向这些关键字添加任何span或div标记或标题信息。是否有一种方法可以自动为页面中包含的某些单词创建工具提示 请告诉我是否有关于如何解决此问题的好教程。//创建工具提示字典 // Create tooltips dictionary $tooltips = Array("Word1"=>"This word is word number 1", "Word2
//创建工具提示字典
// Create tooltips dictionary
$tooltips = Array("Word1"=>"This word is word number 1",
"Word2"=>"This word is word number 2");
$content = "Here are Word1 and Word2";
foreach ($tooltips as $word=>$tip){
$content = preg_replace("/(".$word.")/", "<span title='".$tip."'>$1</span>", $content);
}
echo $content;
$tooltips=Array(“单词1”=>“这个单词是单词编号1”,
“单词2”=>“这个单词是单词编号2”);
$content=“这里是Word1和Word2”;
foreach($word=>$tip形式的工具提示){
$content=preg_replace(“/(“$word”)/”、“$1”、$content);
}
echo$内容;
//创建工具提示字典
$tooltips=Array(“单词1”=>“这个单词是单词编号1”,
“单词2”=>“这个单词是单词编号2”);
$content=“这里是Word1和Word2”;
foreach($word=>$tip形式的工具提示){
$content=preg_replace(“/(“$word”)/”、“$1”、$content);
}
echo$内容;
实际上,您可以使用span或其他任何工具
您有两个选项,第一个选项是在“display:none”div或span中的第一个页面请求中加载工具提示内容,然后用onmouseover事件显示它
第二个选项是执行ajax请求
你应该看看这个:实际上你可以利用span或其他什么 您有两个选项,第一个选项是在“display:none”div或span中的第一个页面请求中加载工具提示内容,然后用onmouseover事件显示它 第二个选项是执行ajax请求
你应该看看这个:我刚才不得不这么做。事实上,我在这里回答了一个类似的问题:(我花了一段时间寻找它) 下面是我用来做动态工具提示的东西:
// keyword : tooltip
keywords = {
'hello world' : 'a common first example program',
'goodbye cruel world' : 'the opposite of hello world'
};
function insertTooltips (domNode) {
if (domNode.nodeType === Node.ELEMENT_NODE) { // We only want to scan html elements
var children = domNode.childNodes;
for (var i=0;i<children.length;i++) {
var child = children[i];
// Filter out unwanted nodes to speed up processing.
// For example, you can ignore 'SCRIPT' nodes etc.
if (
child.nodeName != 'span' ||
child.className != 'tooltip_span'
) {
insertTooltips(child); // Recurse!
}
}
}
else if (domNode.nodeType === Node.TEXT_NODE) { // Process text nodes
var text = domNode.nodeValue;
// This is another place where it might be prudent to add filters
for (var i in keywords) {
if (keywords.hasOwnProperty(i)) {
var match = text.indexOf(i); // you may use search instead
if (match != -1) {
// This is how you wrap the keyword in a span:
// create a span:
var span = document.createElement('SPAN');
// split text into 3 parts: before, mid and after
var mid = domNode.splitText(match);
mid.splitText(i.length);
// then assign mid part to span
mid.parentNode.insertBefore(span,mid);
mid.parentNode.removeChild(mid);
span.appendChild(mid);
// now we can assign a mouseover event handler to the span
span.onmouseover = function(){
showToolTip(keywords[i]);
}
// give the span a class name to prevent accidental
// recursion into it:
span.className = 'tooltip_span';
}
}
}
}
}
//关键字:工具提示
关键词={
“hello world”:“常见的第一个示例程序”,
《再见残酷的世界》:《你好世界的反面》
};
函数插入工具提示(domNode){
如果(domNode.nodeType==Node.ELEMENT\u Node){//我们只想扫描html元素
var children=domNode.childNodes;
对于(var i=0;i我刚才不得不这么做。实际上,我在这里回答了一个类似的问题:(我花了一段时间搜索它)
下面是我用来做动态工具提示的东西:
// keyword : tooltip
keywords = {
'hello world' : 'a common first example program',
'goodbye cruel world' : 'the opposite of hello world'
};
function insertTooltips (domNode) {
if (domNode.nodeType === Node.ELEMENT_NODE) { // We only want to scan html elements
var children = domNode.childNodes;
for (var i=0;i<children.length;i++) {
var child = children[i];
// Filter out unwanted nodes to speed up processing.
// For example, you can ignore 'SCRIPT' nodes etc.
if (
child.nodeName != 'span' ||
child.className != 'tooltip_span'
) {
insertTooltips(child); // Recurse!
}
}
}
else if (domNode.nodeType === Node.TEXT_NODE) { // Process text nodes
var text = domNode.nodeValue;
// This is another place where it might be prudent to add filters
for (var i in keywords) {
if (keywords.hasOwnProperty(i)) {
var match = text.indexOf(i); // you may use search instead
if (match != -1) {
// This is how you wrap the keyword in a span:
// create a span:
var span = document.createElement('SPAN');
// split text into 3 parts: before, mid and after
var mid = domNode.splitText(match);
mid.splitText(i.length);
// then assign mid part to span
mid.parentNode.insertBefore(span,mid);
mid.parentNode.removeChild(mid);
span.appendChild(mid);
// now we can assign a mouseover event handler to the span
span.onmouseover = function(){
showToolTip(keywords[i]);
}
// give the span a class name to prevent accidental
// recursion into it:
span.className = 'tooltip_span';
}
}
}
}
}
//关键字:工具提示
关键词={
“hello world”:“常见的第一个示例程序”,
《再见残酷的世界》:《你好世界的反面》
};
函数插入工具提示(domNode){
如果(domNode.nodeType==Node.ELEMENT\u Node){//我们只想扫描html元素
var children=domNode.childNodes;
对于(var i=0;i即使文本是从数据库读取的,在回显它之前仍应能够将关键字包装在一个范围内。即使文本是从数据库读取的,在回显它之前仍应能够将关键字包装在一个范围内。请注意,“Word1”和“Word2”是不能包含“/”的正则表达式谢谢你的帮助。这个解决方案适合我。这也是我找到的最有效的解决方案。请注意,“Word1”和“Word2”是不能包含“/”的正则表达式。谢谢你的帮助。这个解决方案适合我。这也是我找到的最有效的解决方案。