我想用Javascript进行秒倒计时.
这是我的HTML
<div id="ban_container" class="error center">Please wait
<span id="ban_countdown" style="font-weight:bold">
45</span>
seconds before trying again
</div>
Run Code Online (Sandbox Code Playgroud)
我的JS:
<script type="text/javascript">
var seconds = <?php echo $user->getBlockExpiryRemaining(); ?>;
function countdown(element) {
var el = document.getElementById(element);
if (seconds === 0) {
document.getElementById("ban_container").innerHTML = "done";
return;
}
else {
el.innerHTML = seconds;
seconds--;
setTimeout(countdown(element), 1000);
}
}
countdown('ban_countdown');
</script>
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,它不会等待超时时间,而是立即执行countdown,这样当我刷新页面时它就会立即显示"完成".我知道它实际上是多次被执行,因为如果我这样做,innerHTML += seconds + " ";它会从45开始倒数.为什么超时会被超时?
在Smalltalk中,方法体中经常有两个术语:self和yourself.
他们之间有什么区别?
我安装了Pharo 1.4并尝试阅读"Pharo by example".
不幸的是,这本书和Pharo图像完全不同步:菜单不同; 用作例子的类不存在例如; BouncingAtomsMorph类.
很可惜.也许应该使用特定的Pharo版本来学习,另一个应该使用最新版本...任何人都可以帮忙吗?
在Squeak/Pharo中是否有任何Smalltalk解析器允许我在Squeak/Pharo中浏览VisualWorks代码?我有兴趣阅读以块格式(而不是XML格式)导出的代码.
澄清:我不需要提交代码.
谢谢
我试图理解Smalltalk中更好的反映.我使用的是最新版本的Squeak(v4.3).我想拦截发送到我的一个类的实例的每个消息.我假设我可以覆盖这个方法,ProtoObject>>withArgs:executeMethod但是StéphaneDucasse向我解释说,出于性能原因,这个方法没有被使用(这是我自己对他答案的总结).我应该覆盖哪种方法/如何拦截已发送的消息?
这是我尝试的代码:
Object subclass: #C
instanceVariableNames: 'i'
classVariableNames: ''
poolDictionaries: ''
category: 'CSE3009'.
C class compile: 'newWithi: anInt
^(self new) i: anInt ; yourself.'.
C compile: 'withArgs: someArgs executeMethod: aMethod
Transcript show: ''Caught: ''.
^ super withArgs: someArgs executeMethod aMethod.'.
C compile: 'foo: aText
Transcript show: aText.
Transcript show: i.
Transcript cr.'.
C compile: 'i: anInt
i := anInt.'.
o := C newWithi: 42.
o foo: 'This is foo: '.
Run Code Online (Sandbox Code Playgroud)
执行这整段代码会产生:
This is foo: 42
Run Code Online (Sandbox Code Playgroud)
当我想要:
Caught: This …Run Code Online (Sandbox Code Playgroud) 我刚刚将我的Dolphin Smalltalk + Seaside应用程序移植到最新的Pharo Smalltalk 4.0和Seaside 3.1.在其中,我需要每秒从(浏览器)客户端到(Pharo)服务器进行回调以更新视图.
我有这段代码每秒自动按下"更新"按钮.但是在到Pharo的港口后它不再起作用了:
html script: (
( html jQuery: '#updateButton' )
call: 'click';
interval: 1000 ).
Run Code Online (Sandbox Code Playgroud)
我在网上寻找其他(更优雅的?)解决方案,但似乎无法让它们起作用.任何人都可以给我一个如何进行的提示吗?
这是由上面的代码生成的JavaScript代码,用于在Dolphin + Seaside中工作:
<script type="text/javascript">
/*
<![CDATA[/setInterval(function(){$("#updateButton").cl??ick()},2000)/]]>
*/</script>
Run Code Online (Sandbox Code Playgroud) 我正在学习的课程要求我们在smalltalk中完成所有编码(这是一个Design类).在我们的一个项目中,我希望做一些事情,并且很难找到如何做到这些.似乎大多数人所做的就是修改自己的smalltalk版本来做他们需要做的事情.我不能自由地这样做,因为当我没有相同的内置方法时,这会导致我教授的计算机出错.
这是我要做的事情:
随机数.我需要创建一个1到1000之间的随机数.现在我正在伪造它
rand := Random new.
rand := (rand nextValue) * 1000.
rand := rand asInteger.
Run Code Online (Sandbox Code Playgroud)
这给了我一个0到1000之间的数字.有没有办法在一个命令中执行此操作?相近
Random between: 0 and: 1000
Run Code Online (Sandbox Code Playgroud)
和/或陈述.这个人把我的生活日光所困扰.我尝试了几种不同的配置
(statement) and: (statement) ifTrue...
(statement) and (statement) ifTrue...
Run Code Online (Sandbox Code Playgroud)
所以我用嵌套的ifTrue语句伪装它:
(statement) ifTrue:[
(statement) ifTrue:[...
Run Code Online (Sandbox Code Playgroud)
在smalltalk中做和/或随机的正确方法是什么?
Date dayMonthYearDo: aBlock
"Supply integers for day, month and year to aBlock and return the result"
^ start dayMonthYearDo: aBlock
Run Code Online (Sandbox Code Playgroud)
此消息的典型有效块应该是什么样的?
我试图在Smalltalk的一个类中访问一个类变量.
我有两个类:Class1和Class2.
Class1具有以下变量:年月日小时分钟.Class2具有以下变量:start-time end-time.在Class2的initialize方法中,我有以下内容:
start-time := Class1 new.
end-time := Class1 new.
Run Code Online (Sandbox Code Playgroud)
现在我想将2012年分配给开始时间,如何在Class1对象的启动时间中访问year变量?
我想创建一个简单的游戏.我试图在几秒钟后递归复制一个div.重复后,它会使用新的唯一ID(ID + i)创建新的div.
这个想法是它不断创建div,用户必须点击它们才能在它达到最大值(游戏结束)之前尽可能地删除它们.
它不会正确等待创建div.我想每隔几秒就从现有的div中创建新的div,但是一旦我运行它就创建全部15或者它只创建1并停在那里.
JSFIDDLE - https://jsfiddle.net/namelesshonor/msrkxq63/
function spawnFly() {
if(x >= 15){
alert("YOU LOST\n15 Flys have infested your screen!");
}
else if(x < 15) {
x++; // adds another fly to the counter
setTimeout(duplicate(), 2000); // spawns a new fly after a few secs
animateDiv(); // animate the spawned fly
spawnFly(); // called recursively until fly count is met
}
};
function duplicate() {
var original = document.getElementById('fly'+i);
var clone = original.cloneNode(true);
clone.id = "fly" + i++;
clone.onclick …Run Code Online (Sandbox Code Playgroud) smalltalk ×8
pharo ×6
squeak ×5
javascript ×2
settimeout ×2
visualworks ×2
class ×1
date ×1
html ×1
jquery ×1
metaclass ×1
random ×1
reflection ×1
seaside ×1
timeout ×1
variables ×1