Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.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 如何在JS&;中获得选中的单选按钮以在画布上执行不同的功能;html_Javascript_Html_Canvas_Radio Button - Fatal编程技术网

Javascript 如何在JS&;中获得选中的单选按钮以在画布上执行不同的功能;html

Javascript 如何在JS&;中获得选中的单选按钮以在画布上执行不同的功能;html,javascript,html,canvas,radio-button,Javascript,Html,Canvas,Radio Button,我尝试使用单选按钮来定义用户可以对画布上的对象执行的操作。下面是定义按钮移动向量的部分代码,单击该按钮时,用户可以在单击和拖动箭头时移动屏幕上的一些箭头。我最终希望有一个单独的按钮来旋转和缩放箭头,但我希望它取决于选择的单选按钮。我尝试了下面的代码,但它什么也没做。没有错误代码。它在我添加按钮之前工作,所以我知道应用选中按钮选项时一定出错。有人知道为什么这样不行吗 <td><input name="vectorFunction" type="radio" value="

我尝试使用单选按钮来定义用户可以对画布上的对象执行的操作。下面是定义按钮移动向量的部分代码,单击该按钮时,用户可以在单击和拖动箭头时移动屏幕上的一些箭头。我最终希望有一个单独的按钮来旋转和缩放箭头,但我希望它取决于选择的单选按钮。我尝试了下面的代码,但它什么也没做。没有错误代码。它在我添加按钮之前工作,所以我知道应用选中按钮选项时一定出错。有人知道为什么这样不行吗

    <td><input name="vectorFunction" type="radio" value="moveVector" id="moveVector" onClick="changeVector();"></td>
    <script>
        window.onload = function () {
          var canvas = document.getElementById('canvas');
              context = canvas.getContext('2d');
              mouse = utils.captureMouse(canvas);
              arrow1 = new Arrow();

                arrow1.x = 500;
                arrow1.y = 500;

          var arrow2 = new Arrow();
          arrow2.x = 300;
          arrow2.y = 300;

          function changeVector() {
              if (document.getElementsById("moveVector").checked == true) {

                canvas.addEventListener('mousedown', function () {
                    if (utils.containsPoint(arrow1.getBounds(), mouse.x, mouse.y)) {
                    canvas.addEventListener('mouseup', onMouseUp, false);
                 canvas.addEventListener('mousemove', onMouseMove, false);
              }
              if (utils.containsPoint(arrow2.getBounds(), mouse.x, mouse.y)) {
                 canvas.addEventListener('mouseup', onMouseUp2, false);
                 canvas.addEventListener('mousemove', onMouseMove2, false);
              }
           }, false);

                  function onMouseUp() {
                      canvas.removeEventListener('mouseup', onMouseUp, false);
                      canvas.removeEventListener('mousemove', onMouseMove, false);
          }
                  function onMouseUp2() {
                      canvas.removeEventListener('mouseup', onMouseUp2, false);
                      canvas.removeEventListener('mousemove', onMouseMove2, false);
          }
                  function onMouseMove (event) {
                      arrow1.x = mouse.x;
                      arrow1.y = mouse.y;
                    }
                  function onMouseMove2 (event) {
                      arrow2.x = mouse.x;
                      arrow2.y = mouse.y;
                  }
              }
              else {
                  //Do nothing
              }
          }

window.onload=函数(){
var canvas=document.getElementById('canvas');
context=canvas.getContext('2d');
鼠标=utils.captureMouse(画布);
箭头1=新箭头();
箭头1.x=500;
箭头1.y=500;
var arrow2=新箭头();
箭头2.x=300;
箭头2.y=300;
函数changeVector(){
if(document.getElementsById(“movevevector”).checked==true){
canvas.addEventListener('mousedown',function(){
if(utils.containsPoint(arrow1.getBounds(),mouse.x,mouse.y)){
canvas.addEventListener('mouseup',onMouseUp,false);
addEventListener('mousemove',onMouseMove,false);
}
if(utils.containsPoint(arrow2.getBounds(),mouse.x,mouse.y)){
canvas.addEventListener('mouseup',onMouseUp2,false);
addEventListener('mousemove',onMouseMove2,false);
}
},假);
函数onMouseUp(){
canvas.removeEventListener('mouseup',onMouseUp,false);
canvas.removeEventListener('mousemove',onMouseMove,false);
}
函数onMouseUp2(){
canvas.removeEventListener('mouseup',onMouseUp2,false);
removeEventListener('mousemove',onMouseMove2,false);
}
mouseMove函数(事件){
箭头1.x=鼠标.x;
箭头1.y=鼠标.y;
}
mouseMove2函数(事件){
箭头2.x=鼠标.x;
箭头2.y=鼠标.y;
}
}
否则{
//无所事事
}
}

不确定这是否只是示例中的输入错误,但您的if语句如下所示:

if(document.getElementsById(“movevevector”).checked==true)

尝试更改为单数版本,因为您要查找的是该复选框,而不是列表

即:


if(document.getElementById(“moveVector”).checked==true)

诀窍是将事件侦听器带到检查按钮单击的函数之外,因为您必须让JS告诉html检查按钮是否被选中,而在函数中锁定画布侦听器时,它不能这样做。然后我删除了===true部分,因为它是多余的。下面是有效的方法

<div class="large-6 medium-6 columns">
<label>Select one</label>
<input type="radio" name="vfnselect" value="move" id="vmover" checked>Move</label>

canvas.addEventListener('mousedown', function () {
    if (utils.containsPoint(arrow1.getBounds(), mouse.x, mouse.y)) {
      canvas.addEventListener('mouseup', onMouseUp1, false);
      canvas.addEventListener('mousemove', onMouseVector1, false);
    }
 }, false);
  function onMouseUp1() {
    canvas.removeEventListener('mouseup', onMouseUp1, false);
    canvas.removeEventListener('mousemove', onMouseVector1, false);
  }
function onMouseVector1 (event) {
    if (document.getElementById('vmover').checked) {
      arrow1.x = mouse.x;
      arrow1.y = mouse.y;
    }

选择一个
移动
canvas.addEventListener('mousedown',function(){
if(utils.containsPoint(arrow1.getBounds(),mouse.x,mouse.y)){
canvas.addEventListener('mouseup',onMouseUp1,false);
addEventListener('mousemove',onMouseVector1,false);
}
},假);
函数onMouseUp1(){
canvas.removeEventListener('mouseup',onMouseUp1,false);
canvas.removeEventListener('mousemove',onMouseVector1,false);
}
函数onMouseVector1(事件){
if(document.getElementById('vmover')。选中){
箭头1.x=鼠标.x;
箭头1.y=鼠标.y;
}

是的,还是没什么……不过还是要谢谢你的花絮!