Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Dojo中以编程方式更改按钮文本_Javascript_Dom_Dojo - Fatal编程技术网

Javascript 在Dojo中以编程方式更改按钮文本

Javascript 在Dojo中以编程方式更改按钮文本,javascript,dom,dojo,Javascript,Dom,Dojo,以下是我目前的代码: dojoConfig={parseOnLoad:true}; 重置秒表(); require([“dojo/query”,“dijit/form/ToggleButton”,“dijit/form/Button”,“dojo/dom”,“dojo/dom attr”,“dojo/domReady!”),函数(query,ToggleButton,Button,dom,domttr){ //查询(“简历”)。样式(“显示”、“无”); var-timeUpdate,标志;

以下是我目前的代码:

dojoConfig={parseOnLoad:true};
重置秒表();
require([“dojo/query”,“dijit/form/ToggleButton”,“dijit/form/Button”,“dojo/dom”,“dojo/dom attr”,“dojo/domReady!”),函数(query,ToggleButton,Button,dom,domttr){
//查询(“简历”)。样式(“显示”、“无”);
var-timeUpdate,标志;
flag=false;
新切换按钮({
showLabel:true,
勾选:假,
onChange:函数(val){
if(val){
此.set('label','Stop');
var毫秒=秒=分钟=小时=0;
国际单项体育联合会(旗){
//获取秒表中的当前时间
毫秒=parseInt(domAttr.get(“毫秒”,“内部HTML”);
seconds=parseInt(domatr.get(“seconds”,“innerHTML”);
minutes=parseInt(domatr.get(“minutes”、“innerHTML”);
hours=parseInt(domatr.get(“hours”,“innerHTML”);
}
var startTime=新日期();
timeUpdate=setInterval(函数(){
var timeappeased=new Date().getTime()-startTime.getTime();
//计算小时数
小时=parseInt(时间经过/1000/60/60);
小时=前零(小时);
domAttr.set(“小时”,“内部HTML”,小时+“h”);
//计算分钟数
分钟=parseInt(时间经过/1000/60);
如果(分钟>60)
分钟=分钟%60;
分钟=前零(分钟);
domAttr.set(“分钟”,“内部HTML”,分钟+“m”);
//计算秒数
秒=parseInt(时间经过/1000);
如果(秒>60)
秒=秒%60;
秒=前零(秒);
集合(“秒”,“innerHTML”,秒+“s”);
//计算毫秒
毫秒=经过的时间;
毫秒=前零(毫秒);
如果(毫秒>1000)
毫秒=毫秒%1000;
如果(毫秒<10)
毫秒=“00”+毫秒.toString();
否则如果(毫秒<100)
毫秒=“0”+毫秒.toString();
domAttr.set(“毫秒”,“innerHTML”,毫秒+“毫秒”);
},25);//每25ms更新一次时间
}否则{
此.set('label','Resume');
clearInterval(时间更新);
}
},
标签:“开始”
}“启动/停止”);
/*var resumeButton=新按钮({
标签:“简历”,
onClick:function(){
//clearInterval(时间更新);
//重置秒表();
}
},“简历”);*/
var resetButton=新按钮({
标签:“重置”,
onClick:function(){
domAttr.set(“开始”,“标签”,“开始”);
clearInterval(时间更新);
重置秒表();
}
}“重置”);
});
函数resetStopwatch(){
require([“dojo/dom attr”],函数(domAttr){
domAttr.set(“小时”、“内部HTML”、“00小时”);
domAttr.set(“分钟”、“内部HTML”、“00米”);
domAttr.set(“秒”、“innerHTML”、“00s”);
domAttr.set(“毫秒”、“内部HTML”、“000毫秒”);
});
}
函数prependZero(时间){
如果(时间<10){
time=“0”+time.toString();
返回时间;
}
其他的
返回时间;
}
#秒表,#按钮{
文本对齐:居中;
}
克拉罗先生*
{
大纲:无;
}

同样,您应该将domNode传递给domAttr.set,而不是字符串。 因此,与其传递字符串“start”,不如传递domNode(例如,通过使用数据dojo附加点)

我想你应该用“this.set('label','Start');”来代替它

这可以解决您的问题:

var startButton = new ToggleButton({
    showLabel: true,
    checked: false,
    onChange: function(val) {
       // code
    },
    label: "Start"
}, "start_stop");

var resetButton = new Button({
    label: "Reset",
    onClick: function(){
        startButton.set('label', "Start");
        clearInterval(timeUpdate);
        resetStopwatch();        
    }
}, "reset");
}))


注意,我保存了对startButton的引用,因此它可以是resetButton的onClick中的引用。

在Dojo中,小部件和DOM节点之间存在差异。您的开始按钮是一个小部件,因此使用DOM节点设置该小部件的标签将不起作用。要更改小部件的标签,首先需要使用
dijit/registry
模块检索小部件实例,或者已经有了对小部件的引用(
ToggleButton

之后,您可以使用适当的工具更改小部件的标签

在您的情况下,最好创建对新的
切换按钮的本地引用,例如:

var startBtn = new ToggleButton({
    /** Your code */
});
然后执行以下操作:

startBtn.set("label", "Start");
像往常一样,我也更新了你的


如果您想使用
dijit/registry
模块(现在不需要),您可以通过以下方式使用小部件ID(或DOM ID)获取对小部件的引用:

require(["dijit/registry"], function(registry) {
    registry.byId("start_stop").set("label", "Start");
});

但是,在这种情况下,它没有什么用处,因为您有一种更简单的方法来引用您的小部件,但请记住,以备将来引用(或者如果您开始使用声明性小部件)。

我不太明白您的意思。我正在将
domNode
作为
“start”
传递到
domatr.set()
中。顺便说一下,我不能做
这个.set('label','Start')因为它将用
开始
替换
重置
按钮的标签。