JavaScript 对象扩展 div
JavaScript Object extend div
因为我从 Java Swing 习惯了它,所以我尝试创建一个 JavaScript 对象,它可以添加到文档本身。它应该看起来像:
var customDiv = new MyDiv();
document.appendChild(customDiv);
在对象的构造函数中我会尝试类似
function MyDiv() {
this.innerHTML = "test";
}
以及对象的其他内容。
那么是否可以使用 Java脚本以这样的方式创建网站,或者您如何解决这样的问题?
(我想创建元素,它是一个对象并自己完成所有事情,例如处理事件监听器,并且可以添加到文档中。)
可以,但类似于 Java Swing 方法接受 JPanel
或其他 Swing 组件的方式,appendChild
等函数接受 Node 对象。您将一个函数发送到 appendChild
,它怎么知道如何接受它?
按照您描述的方式创建网站的示例:
var myDiv = document.createElement('div');
myDiv.id = "mydiv";
var myTextbox = document.createElement('input');
myTextbox.type = 'text';
myTextbox.value = 'some value';
myDiv.appendChild(myTextbox);
document.body.appendChild(myDiv);
因此,您创建单独的 DOM 元素并引用它们,类似于创建 Swing 组件的实例。这些元素可以类似于 div
s,可以类似于 JPanel
s 或 input
,类似于 JTextField
s。然后您使用这些引用将它们组合在一起以创建一个 GUI。
为了说明 document.createElement
是如何工作的,因为您在评论中似乎仍然感到困惑,请将其与这样的 Java 方法进行比较(仅供参考,它可能并不严格准确,因为我有一段时间没有使用 Swing):
JComponent createComponent(string componentType) {
if(componentType.equals("JTextField")) {
return new JTextField(10);
} else if(componentType.equals("JFileChooser")) {
// return filechooser
}
//etc.
}
如您所见,调用方法 createComponent
,并向其提供您想要的组件的字符串值,returns 给您实际实例化的空组件。您没有为它定义任何构造函数。相反,您可以引用它,然后用它做任何您想做的事。
因为我从 Java Swing 习惯了它,所以我尝试创建一个 JavaScript 对象,它可以添加到文档本身。它应该看起来像:
var customDiv = new MyDiv();
document.appendChild(customDiv);
在对象的构造函数中我会尝试类似
function MyDiv() {
this.innerHTML = "test";
}
以及对象的其他内容。
那么是否可以使用 Java脚本以这样的方式创建网站,或者您如何解决这样的问题?
(我想创建元素,它是一个对象并自己完成所有事情,例如处理事件监听器,并且可以添加到文档中。)
可以,但类似于 Java Swing 方法接受 JPanel
或其他 Swing 组件的方式,appendChild
等函数接受 Node 对象。您将一个函数发送到 appendChild
,它怎么知道如何接受它?
按照您描述的方式创建网站的示例:
var myDiv = document.createElement('div');
myDiv.id = "mydiv";
var myTextbox = document.createElement('input');
myTextbox.type = 'text';
myTextbox.value = 'some value';
myDiv.appendChild(myTextbox);
document.body.appendChild(myDiv);
因此,您创建单独的 DOM 元素并引用它们,类似于创建 Swing 组件的实例。这些元素可以类似于 div
s,可以类似于 JPanel
s 或 input
,类似于 JTextField
s。然后您使用这些引用将它们组合在一起以创建一个 GUI。
为了说明 document.createElement
是如何工作的,因为您在评论中似乎仍然感到困惑,请将其与这样的 Java 方法进行比较(仅供参考,它可能并不严格准确,因为我有一段时间没有使用 Swing):
JComponent createComponent(string componentType) {
if(componentType.equals("JTextField")) {
return new JTextField(10);
} else if(componentType.equals("JFileChooser")) {
// return filechooser
}
//etc.
}
如您所见,调用方法 createComponent
,并向其提供您想要的组件的字符串值,returns 给您实际实例化的空组件。您没有为它定义任何构造函数。相反,您可以引用它,然后用它做任何您想做的事。