我有一个名为'name'的全局变量,当用户点击按钮时,查询文本框内容并将'name'设置为内容,然后将名称打印在不同的jquery页面中。
我的问题是名称永远不会被打印为它所设置的名称,它始终打印为最初设置的名称。
这是我的回调函数:
<script type="text/javascript">
$("#finalize").click(function(e)
{
g_name = "BLAH";
return true;
});
</script>
为简单起见,我在点击时将名称设置为'BLAH'。
g_name是全局声明的(即在函数范围之外)。
在另一个jquery页面中我有:
document.write('<label for="testname">Name:</label>');
document.write('<input type="text" name="testname" id="testname" value="');
document.write(g_name)
document.write('"/>');
g_name始终显示为其他内容,无论g_name最初是否已启用。
单击回调设置全局变量的按钮也会转换页面,如果这会产生影响......
编辑:
好的,我已经弄清楚出了什么问题,全局变量在设置之前就被写下了。现在我正在尝试这样做:
<script type="text/javascript">
$('#confirmscreen').bind('pageshow',function()
{
document.write('<label for="testname">Name:</label>');
document.write('<input type="text" name="testname" id="testname" value="');
document.write(g_name);
document.write('"/>');
document.write(g_phonenumber);
});
</script>
然而,jquery似乎不喜欢在'pageshow'事件中使用document.write,有没有办法让这个工作,也就是说,当页面显示时写出g_name,而不是当网站是加载?
答案 0 :(得分:1)
使用javascript方法 document.createElement()而不是使用document.write,并使用 setAttribute()方法将值和属性分配给创建的元素。
希望这会对你有所帮助。
答案 1 :(得分:0)
如果该按钮导致页面位置发生变化,那么您的全局变量将被重置,如果有意义,则不会在第二页上显示。在javascript中,全局变量是每个窗口,如果窗口位置发生变化,则为新的全局变量集。