Javascript 函数变量未传递到全局变量

Javascript 函数变量未传递到全局变量,javascript,jquery,html,Javascript,Jquery,Html,大家好,我有两页php文件和一个外部javascript文件。我想将所选单选按钮的值传递给jquery全局变量,以便查看与所选单选按钮的值具有相同id的div元素。每当我点击PLAY按钮我在下一页上看不到我的div元素。这是我的密码: player choose.php脚本: <head> <script src="js/jquery-1.9.1.min.js"></script> <script src="js/mycustom.js"><

大家好,我有两页php文件和一个外部javascript文件。我想将所选单选按钮的值传递给jquery全局变量,以便查看与所选单选按钮的值具有相同id的div元素。每当我点击
PLAY按钮我在下一页上看不到我的div元素。这是我的密码:

player choose.php
脚本:

<head>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/mycustom.js"></script>
</head>

<body>
<div id="player-list">
    <input type="radio" name="player" value="fighter" id="fighter-radio"><label for="fighter-radio"><img src="images/heroes/fighter-01.png" width="74" height="70"></label>
    <input type="radio" name="player" value="pakhi" id="pakhi-radio"><label for="pakhi-radio"><img src="images/heroes/pakhi.png" width="95" height="70"></label>
</div>
<button id="play">PLAY!</button>
</body>
var playerID;

function start(){
spawnhero();
}

$(function(){
$("#play").click(function(){     
    window.location.href = 'index.php';
    playerID = $('input[name=player]:checked').val();

});
})

function spawnhero () {
$("#content").append($("<div>").attr('id', playerID));
}
<head>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/mycustom.js"></script>
</head>

<body onload="start()">
<div id="content">
<div id="galaxy"></div> 
</div>
</body>
index.php
脚本:

<head>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/mycustom.js"></script>
</head>

<body>
<div id="player-list">
    <input type="radio" name="player" value="fighter" id="fighter-radio"><label for="fighter-radio"><img src="images/heroes/fighter-01.png" width="74" height="70"></label>
    <input type="radio" name="player" value="pakhi" id="pakhi-radio"><label for="pakhi-radio"><img src="images/heroes/pakhi.png" width="95" height="70"></label>
</div>
<button id="play">PLAY!</button>
</body>
var playerID;

function start(){
spawnhero();
}

$(function(){
$("#play").click(function(){     
    window.location.href = 'index.php';
    playerID = $('input[name=player]:checked').val();

});
})

function spawnhero () {
$("#content").append($("<div>").attr('id', playerID));
}
<head>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/mycustom.js"></script>
</head>

<body onload="start()">
<div id="content">
<div id="galaxy"></div> 
</div>
</body>


这是一件非常简单的事情,但我不知道为什么它不起作用。我做错什么了吗?如果有人找到解决办法,请告诉我。Tnx

全局变量不是跨页面持久的。加载index.php后,它将具有新的全局范围(窗口变量)

我建议传递一个参数

$("#play").click(function(){
    playerID = $('input[name=player]:checked').val();    
    window.location.href = 'index.php?id=' + playerID;

});

然后,在index.php脚本中,读取参数并相应地分配。

另一种解决方案是,您可以使用JavaScript、jQuery cookie或localstorage。您可以跨页面加载/重定向获取/设置值,但这些值不会传递给服务器

jquerycookie 本地存储
如果您要移动到一个新页面(window.location=…),您将需要一些稍微复杂一点的方式在这些页面之间传输信息——在大多数情况下,HTTP/HTML是“无状态的”,但Cookie等技术除外。JavaScript变量被完全删除了——它实际上是在每个新页面上重新解析整个JQuery库(更不用说这是需要避免的)

对于视频游戏,只要玩家信息不包括服务器组件(我可能错了),我建议将玩家信息保存在
sessionStorage

但是,如果这是一个基于服务器的游戏,您对玩家的选择超出了本地计算机的范围,那么您可能希望通过不同的页面请求结构将玩家ID发送到服务器:

window.location.href = 'index.php?playerId=' + playerId;
或者通过
POST
ing将数据作为一种形式;通过将提交按钮结构化为
,并将所有
元素包装到
对象中,最容易实现

从那里,您的服务器软件可以根据给定的信息以不同的方式写出第二个页面的响应——您甚至可以使用PHP指令自定义在
标记中写入的JavaScript

var playerId = "<?php print($_POST['playerId']); ?>";
var playerId=“”;

希望这有助于您开始。

一旦更改窗口URL,您将加载一个全新的页面,所有以前的上下文都将丢失。您必须向新页面URL添加一个参数,以便它知道应该显示/突出显示的内容或其他内容。很抱歉,其他评论是一个误解。Tnx!你能给我一个简单的示范吗?那真的很有帮助!要传递id,您必须调整代码
window.location.href='index.php?id='+playerID
并在下一页.Tnx上读取
$\u GET['playerID']
,但我将如何读取参数并将其分配回jquery?我想我知道如何使用$_GET[]。但我如何将$\u GET value传递给jquery呢?您可以使用
window.location.search.replace(“?”,”)
将返回一个字符串,由
id=someid
组成,之后由您决定如何使用:)是的,最后一部分正是我需要的。太多了,先生!