javascript - 将另一个函数添加到 onclick

标签 javascript function canvas onclick modal-dialog

您好,我有一个已简化的 onclick 按钮场景。我有两个 Canvas (一个正方形和一个圆形)和一个 onclick。当单击 onclick 时...

1) 方形 Canvas 的饱和度应在 3 秒后增加 5%。

2) 3秒后打开一个模态对话框,里面有一个onclick

当按下“模态对话框”onclick 时,它会关闭并清除并在旧 Canvas 上重新绘制一个新的圆形 Canvas 。

理想情况下,当黄色方 block 的饱和度为 25%(或按下按钮 5 次)时,研究场景应该完成并将我发送到 404。但是方形 Canvas 不会增加其饱和度我不知道它是否会将我发送到 404,因为它不会增加到 25%。

var squaretime = document.getElementById("timeCanvas");
  var sqt= squaretime.getContext("2d");
  sqt.globalAlpha = 0.1;
  sqt.beginPath();
  sqt.rect(0, 0, 80, 80);
  sqt.fillStyle = "yellow";
  //cir.globalAlpha = 0.4;
  sqt.fill();
  sqt.stroke();

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(300, 300, 250, 0, 2 * Math.PI);
ctx.stroke();

ctx.beginPath();
ctx.moveTo(125,125);
ctx.lineTo(475,475);
ctx.stroke();
ctx.beginPath();

ctx.moveTo(125,475);
ctx.lineTo(475, 125);
ctx.stroke();


var modal = document.querySelector(".modal");
var trigger = document.querySelector(".trigger");
var closeButton = document.querySelector(".close-button");


function toggleModal() {
    setTimeout(function() {
        modal.classList.toggle("show-modal");
    }, 3000)
}

function closeModalNow() {
  modal.classList.toggle("show-modal");
  document.querySelector('input[name="conf1d3nce"]').value = null;

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, 600, 600);

ctx.beginPath();
ctx.moveTo(125,125);
ctx.lineTo(475,475);
ctx.stroke();
ctx.beginPath();

ctx.moveTo(125,475);
ctx.lineTo(475, 125);
ctx.stroke();
}

trigger.addEventListener("click", toggleModal);
closeButton.addEventListener("click", closeModalNow);

//increases the yellow square by 5%
   submit = function() {
     reset;
     
reset = function() {
    check_time()
    var y = document.getElementById("timeCanvas")
    var context = y.getContext('2d');
    context.clearRect(0, 0, y.width, y.height);

    //var squaretime = document.getElementById("timeCanvas");
    var sqt= y.getContext("2d");
    console.log(sqt.globalAlpha)
    check_time()
    sqt.globalAlpha = sqt.globalAlpha + 0.05;
    setTimeout(function() {
    sqt.beginPath();
    sqt.rect(0, 0, 80, 80);
    sqt.fillStyle = 'yellow';
    sqt.fill();
    sqt.stroke();
}, 3000)
}}
    
//finished the task at 25% saturation of yellow square
check_time = function() {
 var y = document.getElementById("timeCanvas")
  var sqt= y.getContext("2d");
 if (sqt.globalAlpha >= 0.95) {
 console.log(sqt.globalAlpha);
   window.location.href = "INTERCEPT";
 }
}
.modal {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.01);
    opacity: 0;
    visibility: hidden;
    transform: scale(1.1);
    transition: visibility 0s linear 0.25s, opacity 0.25s 0s, transform 0.25s;
}
.modal-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: white;
    padding: 1rem 1.5rem;
    width: 24rem;
    border-radius: 0.5rem;
}
.close-button {
    float: right;
    width: 1.5rem;
    line-height: 1.5rem;
    text-align: center;
    cursor: pointer;
    border-radius: 0.25rem;
    background-color: lightgray;
}
.close-button:hover {
    background-color: darkgray;
}
.show-modal {
    opacity: 1;
    visibility: visible;
    transform: scale(1.0);
    transition: visibility 0s linear 0s, opacity 0.25s 0s, transform 0.25s;
}
<div class="styling">
<div class="general_text_2">
<p>Time left </p>
<canvas id="timeCanvas" width="80" height="80" style="border:1px solid #d3d3d3;">
</canvas>

<button class="trigger">Click here </button>
<div class="modal">
    <div class="modal-content">
      
        <h1>
          <label><b>Please state your confidence with this decision (0-100%)</b></label>
          <p>
         <input class="bottomaftertrialquestions" type="number" placeholder="Type here" name="conf1d3nce"min="0" max="100" required>
          </p>
          <p></h1>
            <button type="button" class="close-button">SAVE</button>
    </div>
</div>


// CIRCLE GRID (MAP) 

<canvas id="myCanvas" width="600" height="600" style="border 12px solid black">
</canvas> 

但是,这些在我的代码中都不起作用。任何人都可以帮忙。如有任何问题,请随时提出。

最佳答案

您必须将代码减少到最小的示例......

我看到几个问题:

  • 没有调用提交
  • 重复 document.getElementById("timeCanvas");
  • alpha 的增加超出了增加它的实际函数

请参阅下面的代码中的最小工作示例

var squaretime = document.getElementById("timeCanvas");
var sqt = squaretime.getContext("2d");
sqt.globalAlpha = 0.1;
sqt.beginPath();
sqt.rect(0, 0, 80, 80);
sqt.fillStyle = "yellow";
//cir.globalAlpha = 0.4;
sqt.fill();
sqt.stroke();

document.querySelector(".trigger").onclick = submit;

//increases the yellow square by 5%
function submit() {
  setTimeout(function() {
    sqt.clearRect(0, 0, squaretime.width, squaretime.height);
    sqt.beginPath();
    sqt.globalAlpha = sqt.globalAlpha + 0.05;
    sqt.rect(0, 0, 80, 80);
    sqt.fillStyle = 'yellow';
    sqt.fill();
    sqt.beginPath();
    sqt.fillStyle = 'black';
    sqt.fillText(sqt.globalAlpha, 10, 50);
  }, 100)

}
<canvas id="timeCanvas" width="80" height="80"></canvas>

<button class="trigger">Click here </button>

关于javascript - 将另一个函数添加到 onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657069/

相关文章:

javascript - Contenteditable:将光标移到插入的 html 节点之外(webkit/ie)

c++ - 为什么类成员函数不能接受多个与其类相同类型的参数

javascript - 如何按照序列洗牌(非随机)

javascript - 如何更改html5 Canvas 线的起点和终点位置?

javascript - 垂直滑动应用enyojs

javascript - 如何检查一个列表是否包含另一个列表中的任何值?

javascript - 如何旋转 Canvas 矩形数组

html - 如何使用 jCrop 插件处理 html5 canvas 对象?

javascript - 找不到包名称 '' 的匹配客户端,但应用程序目录中存在 google-services.json

perl - 单个字符串中对象返回的 HASH 元素