javascript作用域实际上不是全局的

javascript作用域实际上不是全局的,javascript,function,scope,Javascript,Function,Scope,var\u gquill; var_gform; 函数quillFunctionSetup(quillvar、quillformvar、quillsubmitvar){ _gquill=新的纬管(“#”){ 模块:{toolbar:true}, 主题:“雪” }); _gform=document.getElementById(quillformvar); _gform.onsubmit=函数(quillsubmitvar,_gquill){ var about=document.getElem

var\u gquill;
var_gform;
函数quillFunctionSetup(quillvar、quillformvar、quillsubmitvar){
_gquill=新的纬管(“#”){
模块:{toolbar:true},
主题:“雪”
});
_gform=document.getElementById(quillformvar);
_gform.onsubmit=函数(quillsubmitvar,_gquill){
var about=document.getElementById(quillsubmitvar);
about.value=_gquill.container.firstChild.innerHTML;
返回false;
};
}

{{ST_Title.overviewsdescription}}

QuillFunction设置(“quilleditor”、“概览表”、“新概览”)问题在这一行:
\u gform.onsubmit=function(quillsubmitvar,\u gquill){

在本例中,
quillsubmitvar
\u gquill
没有被传入,它们被列为将被传递给该函数的参数的名称,与第一个声明的工作方式相同
function quillFunctionSetup(quillvar,quillformvar,quillsubmitvar){

Javascript是词汇范围的,这意味着
quillFunctionSetup
中的任何内容都可以访问该闭包中定义的其他变量以及该闭包之外的任何内容,但在其他地方的单独闭包中没有定义任何内容(在本例中不适用)


如果将来可以按预期工作,请确保代码缩进良好。否则很难执行。行
$(form).serializeArray();
肯定是无效语法。我猜应该在注释行上。您需要移动
quillFunctionSetup(…)
表单元素外部的函数调用(将其放在
之后)。您当前正试图对尚不存在的某个对象调用
document.getElementById
。不,这些是预期的函数参数,由于您将它们命名为相同的参数,因此它们在vs中是完全不同的变量outside@Jacob抱歉,我删除了$(表单).serializeArray());并通过缩进和注释进行更新,以使legible@noone392啊,现在已经清理好了,我看到问题了。这行是错误的
\u gform.onsubmit=function(quillsubmitvar,\u gquill){
,应该是
function()
。目前,您正在覆盖
quillsubmitvar
的值,因为
onsubmit
正在将
事件
对象作为第一个参数传递。谢谢jmcgriz。当我这样做时,我的提交按钮不再起任何作用,我的意思是过去根本不会发布。是的,它应该不会。
返回false
中断表单帖子。如果您想在分配到
about.value
后继续表单帖子,您需要删除
return false
,我希望我能再次浏览此答案!非常感谢!
_gform.onsubmit = function() {     
    var about = document.getElementById(quillsubmitvar);       
    about.value = _gquill.container.firstChild.innerHTML;
    return false;
};