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