通用的 DynForm 类初稿,及 JS OOP 讨论,抛砖引玉,欢迎发表高见
一直在琢磨 JS 下 OOP 的问题,高手有宝贵经验的,望不吝赐教
另外,下面这个类很粗糙,我自己都看出一些问题了,能指出大问题的多加分 :)
//DynForm.js
// class DynForm
// DynForm::DynForm
function DynForm(_parentElement, _target, _action, _method, _onsubmit, _class)
{
// member vars
this.parentElement = _parentElement;
this.target = _target;
this.action = _action;
this.method = _method;
this.onsubmit = _onsubmit;
this.oForm = null;
this.className = _class;
// member functions
this.Create = DynFormCreate;
this.NewHidden = DynFormNewHidden;
this.NewInput = DynFormNewInput;
this.NewTextArea = DynFormNewTextArea;
this.NewLine = DynFormNewLine;
return this;
}
// DynForm::Create
function DynFormCreate()
{
var oForm = document.createElement("FORM");
this.parentElement.appendChild(oForm);
this.oForm = oForm;
with ( this )
{
if (target) oForm.target = target;
if (action) oForm.action = action;
if (method) oForm.method = method;
if (onsubmit) oForm.onsubmit = onsubmit;
}
return oForm;
}
// DynForm::DynFormNewHidden
function DynFormNewHidden(_name, _value)
{
var oInput = document.createElement("<INPUT type=hidden name="+_name+" value="+_value+">");
this.oForm.appendChild(oInput);
return oInput;
}
// DynForm::NewInput
function DynFormNewInput(_type, _name, _value, _class)
{
var oInput = document.createElement("INPUT");
this.oForm.appendChild(oInput);
with ( oInput )
{
if (_type) type = _type;
if (_name) name = _name;
value = _value;
if (_class) className = _class;
}
return oInput;
}
// DynForm::NewTextArea
function DynFormNewTextArea(_name, _rows, _cols, _class)
{
var oTextArea = document.createElement("TEXTAREA");
this.oForm.appendChild(oTextArea);
with ( oTextArea )
{
if (_name) name = _name;
if (_rows) rows = _rows;
if (_cols) cols = _cols;
if (_class) className = _class;
}
return oTextArea;
}
// DynForm::NewLine
function DynFormNewLine()
{
var oBr = document.createElement("BR");
this.oForm.appendChild(oBr);
}
//test_DynForm.htm
<html>
<head>
<title>demo of class DynForm</title>
<script type="text/javascript" src="./dynform.js"></script>
</head>
<body>
<div id="oDiv" style="border:1px solid black"></div>
<script>
var oDynForm = new DynForm(oDiv, "", "http://www.test.com", "post", "", "")
oDynForm.Create()
oDynForm.NewHidden("arg1", "value1")
oDynForm.NewLine()
oDynForm.NewInput("text", "input1", "1", "")
oDynForm.NewLine()
oDynForm.NewInput("text", "input2", "2", "")
oDynForm.NewLine()
oDynForm.NewTextArea("area1", 30, 70, "")
</script>
</body>
</html>