Javascript css设置dojo对话框的样式

Javascript css设置dojo对话框的样式,javascript,dojo,Javascript,Dojo,我有一个对话框,其中包含label和ValidationTextBox的分组,这些分组通过编程添加到对话框中。示例:名字:XXXXXX 如果我没有指定css格式,那么标签和ValidationTextBox会并排显示。但是,这两组数据相互重叠,没有间距 如果我为高度、边距和填充添加css。第一个分组可以,但是以下标签从当前ValidationTextBox的开始处开始。不是在下一行的开头。所以路线都不正常了 是的,我尝试过分别更改标签和文本框的高度、填充和边距。将放在行尾没有运气。我曾想过将分组

我有一个对话框,其中包含label和ValidationTextBox的分组,这些分组通过编程添加到对话框中。示例:名字:XXXXXX

如果我没有指定css格式,那么标签和ValidationTextBox会并排显示。但是,这两组数据相互重叠,没有间距

如果我为高度、边距和填充添加css。第一个分组可以,但是以下标签从当前ValidationTextBox的开始处开始。不是在下一行的开头。所以路线都不正常了

是的,我尝试过分别更改标签和文本框的高度、填充和边距。将
放在行尾没有运气。我曾想过将分组封装在span或div中,但得到了相同的行为,并设置了封装div/span的大小。但是没有运气

有人能解释一下为什么会出现以下功能吗

function buildDialogField(fieldHolder, id, title, value, widgetId)
{
    var newLabel, newField;
    if (value === null) {
        value = "";
    }

    newLabel = "<div class='datadiv'><label for='" + id + "'>" + title + ":</label>";
    dojo.place(newLabel, fieldHolder);
    newField = new dijit.form.ValidationTextBox({
        id: widgetId,
        name: "myData",
        value: value,
        trim: true
    });
    dojo.place(newField.domNode, fieldHolder);
    dojo.place("</div>", fieldHolder);
}
函数buildDialogField(字段持有者、id、标题、值、widgetId)
{
变量newLabel,newField;
如果(值===null){
value=“”;
}
newLabel=“”+标题+”:“;
dojo.place(新标签、字段持有者);
newField=new dijit.form.ValidationTextBox({
id:widgetId,
名称:“myData”,
价值:价值,
修剪:对
});
dojo.place(newField.domNode,fieldHolder);
道场(“,场主);
}
生成以下html

<div class='datadiv'>
    <label for='name'>me:</label>
</div>
<div id="widget_305" class="dijit dijitReset dijitInlineTable dijitLeft dijitTextBox dijitValidationTextBox" wairole="presentation" role="presentation" widgetid="305">

我:
结束div显示在标签后面但在ValidationTextBox之前。虽然这不是我编码的


感谢所有帮助我消除困惑的人。

您正在将无效/不完整的HTML发送到
dojo.place
,它(或浏览器)正在为您“完成”它
dojo.place
不仅仅是
elem.innerHTML+=“…”
的别名,但您似乎在某种程度上是这样对待它的

我认为修复这段代码实际上应该很简单:

newLabel = "<div class='datadiv'><label for='" + id + "'>" + title + ":</label></div>";
dojo.place(newLabel, fieldHolder);
newField = new dijit.form.ValidationTextBox({
    id: widgetId,
    name: "myData",
    value: value,
    trim: true
});
// the following is equivalent to dojo.place(newField.domNode, newLabel)
newField.placeAt(newLabel);
newLabel=“+title+”:”;
dojo.place(新标签、字段持有者);
newField=new dijit.form.ValidationTextBox({
id:widgetId,
名称:“myData”,
价值:价值,
修剪:对
});
//以下内容相当于dojo.place(newField.domNode,newLabel)
newField.placeAt(newLabel);
解释。
newLabel
变量最终接收从传递到
dojo.place
的HTML内容生成的顶级DOM节点。(注意,我通过添加结尾的
完成了HTML字符串)在本例中,这实际上是
div
,而不是
标签
——因此您可能需要更改变量名

然后,我们将小部件放置在该div中-默认情况下,
placeAt
将小部件放置为指定节点的最后一个子节点(就像默认情况下,
dojo.place(nodetobeplace,targetNode)
一样)

您可以通过传递另一个参数来判断它是否正确-有关详细信息,请参阅和。

newField.placeAt(newLabel);正在为validationText框的值提供未定义的。