javascript - 如何使用javascript在屏幕的右半部分或左半部分随机显示刺激物(图像、div,以最简单的为准)
问题描述
如何使用 javascript 在屏幕的右半部分或左半部分随机显示刺激物(图像、div,以最简单的为准)。
关于让按钮点击记录反应时间的任何想法,点击哪个按钮(左或右),以及刺激呈现在哪一侧?此外,当刺激出现在右侧时,左侧按钮应为“真”,反之亦然。
<head>
<style >
.divStyleLeft {
width: 300px;
height: 300px;
background-color: lightblue;
float: left;
}
.divStyleRight {
width: 300px;
height: 300px;
background-color: lightgreen;
float: right;
}
.maxWidth {
width: 100%;
}
.button {
float: right;
}
.button2 {
float: left;
}
</style>
</head>
<body onload="presentStimulus()">
<div class="button">
<button onclick="presentStimulus()">Click Me</button>
</div>
<div class="button2">
<button onclick="presentStimulus()">Click Me </button>
</div>
<div class="maxwidth"></div>
<div id="float" class="divStyleLeft" onclick="recordClick()">
I AM NOT FLOATING
</div>
<script>
let numClicks= 0;
let timeStart = 0;
let timeEnd = 0;
function Trial(trialTime, sidePresented,buttonClicked,) {
this.trialTime = trialTime;
this.sidePresented= sidePresented;
this.buttonClicked= buttonClicked;
}
let allTrials = [];
for(x = 0; x < 12; x++)
allTrials.push(new Trial(0,0,0));
Trial.prototype.toString=function(){
return this.trialTime + "ms, Side : " + this.sidePresented + ", Reaction Time: " + this.buttonClicked
+ "<br>";
};
function presentStimulus() {
const elem = document.querySelector ( '#float' );
const min = 1;
const max = 2;
const v = Math.floor(Math.random() * (max - min + 1)) + min;
console.log ( 'Random num is ' + v + ": ", '1 will go left, 2 will go right' );
v === 1 ?
( () => {
elem.classList = [ 'divStyleLeft' ];
elem.innerText = 'Hello!';
} ) () :
( () =>{
elem.classList = [ 'divStyleRight' ];
elem.innerText = 'Hi!';
} ) ();
}
function recordClick()
{
let theData = document.getElementById("#float").data;
timeEnd = Date.now();
allTrials[numClicks].trialTime = timeEnd - timeStart;
allTrials[numClicks].sidePresented = theData.sidePresented;
allTrials[numClicks].buttonClicked = theData.buttonClicked;
if (numClicks < 11) {
numClicks++;
presentStimulus();
}
else {
document.getElementById("float").style.visibility = "hidden";
let output = "";
for (x = 0; x < allTrials.length; x++)
output = output + "<b>:" + (x + 1) + "</b>:" + allTrials[x].toString();
document.getElementById("display").innerHTML = output;
}
}
</script>
<p id="display"></p>
</body>
解决方案
有很多方法可以解决这个问题。
如果您使用的是普通的 'ol JS,我可能会在 CSS 中创建向左或向右浮动的类,可能显示为向左或向右显示的 flex 容器,无论您的具体需要是什么(同样,有很多方法去做,考虑到你的情况,一个可能比另一个更好)。
当您确定左或右(生成一个随机数或其他)时,使用所需的类更新 DOM 元素上的类列表,使其以这种方式或那种方式运行。
对于它的价值,这是一个简单的香草 JS 示例。同样,我不知道您的具体背景,但这应该让您开始了解如何看待它。浮动可能并不理想,您可能只想隐藏/显示左侧或右侧已经存在的容器,或者实际上创建全新的 DIV 并将它们插入已知的“持有人”容器(通常只是空 div),但想法是相同的; 生成随机数,更改要隐藏/显示/移动/任何元素的类列表,如有必要,根据需要更改 innerHTML 或文本。
<html>
<head>
<style>
.divStyleLeft {
width: 300px;
height: 300px;
background-color: lightblue;
float: left;
}
.divStyleRight {
width: 300px;
height: 300px;
background-color: lightgreen;
float: right;
}
.maxWidth {
width: 100%;
}
</style>
</head>
<body>
<button onclick="onClick()">Click Me</button>
<div class="maxwidth">
<div id="floater" class="divStyleLeft">
I AM NOT FLOATING
</div>
<div>
<script>
function onClick () {
const elem = document.querySelector ( '#floater' );
const min = 1;
const max = 2;
const v = Math.floor(Math.random() * (max - min + 1)) + min;
console.log ( 'Random num is ' + v + ": ", '1 will go left, 2 will go right' );
v === 1 ?
( () => {
elem.classList = [ 'divStyleLeft' ];
elem.innerText = 'I am floating LEFT';
} ) () :
( () =>{
elem.classList = [ 'divStyleRight' ];
elem.innerText = 'I am floating RIGHT';
} ) ();
}
</script>
</body>
</html>
推荐阅读
- typescript - 如何从 Firebase SDK 导入 Cloud Firestore Timestamp 对象?
- graphql - 用于 AWS AppSync 中的异步计算的 Graphql 订阅
- java - 类不是抽象的,不会覆盖抽象方法错误
- r - 使用 R 中的变量查询 Postgresql 表
- java - 将代码保持为嵌套 if 语句或尝试转换为一个或多个开关会更容易吗
- python - 积分计算出现意外结果
- regex - 避免针对 ScalaTest 中的正则表达式的 matchPattern 的弃用警告
- android - 更新 chrome 76 后 Webview 显示空白页面
- python - 如何从熊猫的数据框中获取密钥
- javascript - 事件过滤器不适用于 FullCalendar v4