2017-12-02 8 views
0

私は色の選択のドロップダウンを持っていますが、色を選択するとその色を変えるキャンバスが必要です。イベントハンドラを使用する必要があります。配列の使用順に各色のカラーコードは#8A2BE2、#DC143C、#E9967A、#6B8E23、#8B4513です。ここでは、私が持っているものです:あなたはこのようにそれを行うことができ、色名にマッピングされた16進コードを使用したい場合はここでイベントハンドラを使用して背景色を変更し、すべてのCanvasオブジェクトを再描画

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title>Project 3</title> 
<meta charset="utf-8"> 
<meta name="description" content="P3"> 
<meta name="author" content="name"> 
<link rel="stylesheet" href="p3.css"> 
<script src="p3.js"> </script> 
</head> 
<body> 
<canvas width="500" height="500" id="myCanvas"></canvas> 
<form id="myForm"> 
    <select id="colorDropdown"> 
     <option>Select a Background Color</option> 
    </select> 
</form> 
<button onclick="clearCanvas">Clear Canvas</button> 
</body> 
</html> 

はjavascriptの

window.onload = function() { 
let selectElement = document.getElementById('colorDropdown'), 
    options = ["Blue Violet", "Crimson", "Dark Salmon", "Olive Drab", "Saddle Brown"]; 
for (let i = 0; i < options.length; i++) { 
    let opt = options[i]; 
    let optionList = document.createElement("option"); 
    optionList.textContent = opt; 
    optionList.value = opt; 
    selectElement.appendChild(optionList) 
} 
} 
document.getElementById('colorDropdown').onchange = function() { 
let c = document.getElementById("myCanvas"); 
let ctx = c.getContext("2d"); 
ctx.beginPath(); 
ctx.rect(20, 20, 150, 100); 
ctx.fillStyle = document.getElementById('colorDropdown').value; 
ctx.fill(); 
}; 

document.getElementById('clearCanvas').onclick = 
function clearCanvas() { 
let canvas = document.getElementById("myCanvas"); 
var context = canvas.getContext('2d'); 
context.save(); 
context.setTransform(1, 0, 0, 1, 0, 0); 
context.clearRect(0, 0, canvas.width, canvas.height); 
context.restore(); 
} 

答えて

0

です:

変更

options = ["Blue Violet", "Crimson", "Dark Salmon", "Olive Drab", "Saddle Brown"]; 

~

options = [ 
    {"colorName": "Blue Violet", "hexCode": "#8A2BE2"}, 
    {"colorName": "Crimson", "hexCode": "#DC143C"}, 
    {"colorName": "Dark Salmon", "hexCode": "#E9967A"}, 
    {"colorName": "Olive Drab", "hexCode": "#6B8E23"}, 
    {"colorName": "Saddle Brown", "hexCode": "#8B4513"} 
]; 

、あなたは、彼らは空白なしで書かれるべき、進コードを使用したいが、ドロップダウンから、色の名前を使用しない場合

optionList.textContent = opt.colorName; 
optionList.value = opt.hexCode; 

optionList.textContent = opt; 
optionList.value = opt; 

を変更。 (青紫色がBlueVioletのように記述する必要があります)あなたは何ができるか

は、例えば空白を削除します:

変更この行:この行に

let opt = options[i]; 

let opt = options[i].replace(/\s/g, ''); 

注:は、提供されたコードを実行します。

このID document.getElementById('clearCanvas')が存在しないので

のdocument.getElementById(...)は

nullです。

微調整コード:

window.onload = function() { 
 
    let selectElement = document.getElementById('colorDropdown'), 
 
     options = [ 
 
      {"colorName": "Blue Violet", "hexCode": "#8A2BE2"}, 
 
      {"colorName": "Crimson", "hexCode": "#DC143C"}, 
 
      {"colorName": "Dark Salmon", "hexCode": "#E9967A"}, 
 
      {"colorName": "Olive Drab", "hexCode": "#6B8E23"}, 
 
      {"colorName": "Saddle Brown", "hexCode": "#8B4513"} 
 
     ]; 
 

 
    for (let i = 0; i < options.length; i++) { 
 
     let opt = options[i]; 
 
     let optionList = document.createElement("option"); 
 
     optionList.textContent = opt.colorName; 
 
     optionList.value = opt.hexCode; 
 
     selectElement.appendChild(optionList) 
 
    } 
 
} 
 
document.getElementById('colorDropdown').onchange = function() { 
 
    let c = document.getElementById("myCanvas"); 
 
    let ctx = c.getContext("2d"); 
 
    ctx.beginPath(); 
 
    ctx.rect(20, 20, 150, 100); 
 
    ctx.fillStyle = document.getElementById('colorDropdown').value; 
 
    ctx.fill(); 
 
}; 
 

 
document.getElementById('clearCanvas').onclick = 
 
    function clearCanvas() { 
 
     let canvas = document.getElementById("myCanvas"); 
 
     var context = canvas.getContext('2d'); 
 
     context.save(); 
 
     context.setTransform(1, 0, 0, 1, 0, 0); 
 
     context.clearRect(0, 0, canvas.width, canvas.height); 
 
     context.restore(); 
 
    }
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <title>Project 3</title> 
 
    <meta charset="utf-8"> 
 
    <meta name="description" content="P3"> 
 
    <meta name="author" content="name"> 
 
</head> 
 
<body> 
 
<canvas width="150" height="150" id="myCanvas"></canvas> 
 
<form id="myForm"> 
 
    <select id="colorDropdown"> 
 
     <option>Select a Background Color</option> 
 
    </select> 
 
</form> 
 
<button onclick="clearCanvas" id="clearCanvas">Clear Canvas</button> 
 
</body> 
 
</html>

関連する問題