Javascript 将mouseover()事件后检索的text()存储为用于查询JSON字符串的变量

Javascript 将mouseover()事件后检索的text()存储为用于查询JSON字符串的变量,javascript,jquery,html,css,json,Javascript,Jquery,Html,Css,Json,我试图根据悬停在上面的特定元素动态查询JSON字符串。元素是P标签,只有与玩家姓名相等的文本 脚本(包含json字符串): 进入一个全局变量,我可以稍后在页面中使用。对话框中的脚本仅在第一次创建对话框时执行 我建议你改变一下: $(函数(){ $(“#对话框”)。对话框({ 宽度:150, 位置:{my:“center”,位于:“.ball container”的“right”}, 自动打开:错误, 展示:{ 效果:“盲”, 持续时间:1000 }, 隐藏:{ 效果:“爆炸”, 持续时间:10

我试图根据悬停在上面的特定元素动态查询JSON字符串。元素是P标签,只有与玩家姓名相等的文本

脚本(包含json字符串):


进入一个全局变量,我可以稍后在页面中使用。

对话框中的脚本仅在第一次创建对话框时执行

我建议你改变一下:

$(函数(){
$(“#对话框”)。对话框({
宽度:150,
位置:{my:“center”,位于:“.ball container”的“right”},
自动打开:错误,
展示:{
效果:“盲”,
持续时间:1000
},
隐藏:{
效果:“爆炸”,
持续时间:1000
}
});
$(“.players”).mouseover(函数(){
$('#statName').text(this.textContent);
$('#avg').text(json[this.textContent].avg);
$(“对话框”)。对话框(“打开”);
});
$players='{“Player One”:{“avg”:“400”,“gp”:“2”,“gs”:“2”,“ab”:“5”,“r”:“0”,“h”:“2”}\
“玩家二”:{“avg”:“500”,“gp”:“2”,“gs”:“0”,“ab”:“2”,“r”:“1”,“h”:“1”}'
var json=json.parse($players);
});

玩家一号

玩家二


对话框内的脚本仅在第一次创建对话框时执行

我建议你改变一下:

$(函数(){
$(“#对话框”)。对话框({
宽度:150,
位置:{my:“center”,位于:“.ball container”的“right”},
自动打开:错误,
展示:{
效果:“盲”,
持续时间:1000
},
隐藏:{
效果:“爆炸”,
持续时间:1000
}
});
$(“.players”).mouseover(函数(){
$('#statName').text(this.textContent);
$('#avg').text(json[this.textContent].avg);
$(“对话框”)。对话框(“打开”);
});
$players='{“Player One”:{“avg”:“400”,“gp”:“2”,“gs”:“2”,“ab”:“5”,“r”:“0”,“h”:“2”}\
“玩家二”:{“avg”:“500”,“gp”:“2”,“gs”:“0”,“ab”:“2”,“r”:“1”,“h”:“1”}'
var json=json.parse($players);
});

玩家一号

玩家二


鼠标悬停事件发生之前,您的对话框信息已被填充。在
mouseover
事件处理程序中,需要将适当的信息复制到对话框中

这意味着您的对话框可能如下所示:

<div id="dialog">
    <p>Avg: <span id="statavg"></span></p>
</div>
$(".players").mouseover(function() {
    playerName = $(this).text();
    $("#statavg").text(json[playerName].avg);
    $("#dialog").dialog("open");
});

虽然我不太熟悉jQueryUI对话框功能。

您的对话框信息是在您的
鼠标悬停事件发生之前填写的。在
mouseover
事件处理程序中,需要将适当的信息复制到对话框中

这意味着您的对话框可能如下所示:

<div id="dialog">
    <p>Avg: <span id="statavg"></span></p>
</div>
$(".players").mouseover(function() {
    playerName = $(this).text();
    $("#statavg").text(json[playerName].avg);
    $("#dialog").dialog("open");
});

虽然我不太熟悉jQueryUI对话框函数。

不要再次声明
var statName
。只需给它赋值。另外,如果使用jQuery而不是使用
document.write(..
alert(json[statName].avg),还有更好的方法来填充对话框
应该有效。这些答案不起作用。问题是statName变量隐藏在函数中,因此无法识别。我需要mouseover函数中的var statName来接管“全局”变量statName,而不仅仅是在函数中隔离。不要再次声明
var statName
。只需为如果您使用jQuery而不是使用
document.write(..
alert(json[statName].avg),那么还有更好的方法来填充对话框
应该可以。这些答案不起作用。问题是statName变量隐藏在函数中,因此无法识别。我需要mouseover函数中的var statName来接管“全局”变量statName,而不仅仅是在函数中隔离。这看起来不错……我会查看一下,然后再与您联系……谢谢谢谢你的帮助。真不敢相信我错过了。这个看起来不错…我会看一看然后再给你回复…谢谢你的主意。谢谢你的帮助。真不敢相信我错过了。
<div id="dialog">
    <p>Avg: <span id="statavg"></span></p>
</div>
$(".players").mouseover(function() {
    playerName = $(this).text();
    $("#statavg").text(json[playerName].avg);
    $("#dialog").dialog("open");
});