Javascript函数因全局变量而失败

时间:2012-04-19 10:05:44

标签: javascript variables global

我已将此功能用于提交任何网址或“自我”, 有或没有查询字符串,很多次没有任何问题。

function submitu(url, q) {
 var frm = document.<?php echo $formname ?>;
 if (url == '') {url = '<?php echo $thispage?>'; }
 frm.action = url+q; frm.submit(); }

如果我尝试将PHP变量移到函数外部,如下所示,它将停止工作(frm undefined error)

var thispage = '<?php echo $thispage?>';
var frm = document.<?php echo $formname?>;
function submitu(url, q) {
 if (url == '') {url = thispage;}
 frm.action = url+q; frm.submit();}

我也试过var frm = document.forms [''];

我没有任何其他有冲突的javascript,

(1)。谁能告诉我为什么这不起作用? (2)。如果放置函数,第一种方法也会失败的原因      在jquery $(function(){.....}就绪函数的内部和顶部?

非常感谢

1 个答案:

答案 0 :(得分:1)

失败是因为在函数外部,var frm = document.formname; 将在页面加载时立即运行,即在实际构造表单元素之前运行,因此您将获得“未定义”。当在函数内部时,它仅在函数运行时运行,此时DOM完成并且可以找到它。