用“<选择></选择>"类型
Resizing a html5 canvas with the "<select></select>" form
我一直在尝试创建一个画布元素,您可以使用"select form"的值来调整该元素的大小。我更愿意只使用Javascript来实现这一点。我觉得我在某个地方遗漏了一个很小的细节。
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
canvas.width = 550;
canvas.height = 300;
drawScreen();
formElement = document.getElementById("height");
formElement.addEventListener('change', heightCanged, true);
formElement = document.getElementById("width");
formElement.addEventListener('change', widthCanged, false);
function widthChanged(e) {
var target = e.target;
canvas.width = target.value;
drawScreen();
}
function heightChanged(e) {
var target = e.target;
canvas.height = target.value;
drawScreen();
}
#canvas {
border: 1px solid black;
}
//html
<canvas id="canvas"></canvas>
<h3>Height</h3>
<select id="height">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<h3>Width</h3>
<select id="width">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
JS Fiddlehttp://jsfiddle.net/8ma4evLp/1/
如果删除对drawScreen的调用(因为它没有定义),它应该可以正常工作:fiddle
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var heightSelect = document.getElementById("height");
var widthSelect = document.getElementById("width");
canvas.width = 550;
canvas.height = 300;
//drawScreen();
heightSelect.addEventListener('change', function() {
canvas.height = this.value;
});
widthSelect.addEventListener('change', function() {
canvas.width = this.value;
});
#canvas{
border:1px solid black;
}
<canvas id="canvas"></canvas>
<h3>Height</h3>
<select name="height" id="height">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
</select>
<h3>Width</h3>
<select name="Width" id="width">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
</select>
有几件事不对劲,看起来有些函数名拼写错误,最重要的是,您在select元素上使用了name属性,但在JavaScript中使用了getElementById()
来获取它。这是一个更新的工作示例。
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
canvas.width = 550;
canvas.height = 300;
drawScreen();
formElement = document.getElementById("height");
formElement.addEventListener('change', heightChanged, true);
formElement = document.getElementById("width");
formElement.addEventListener('change', widthChanged, false);
function widthChanged(e) {
var target = e.target;
canvas.width = target.value;
drawScreen();
}
function heightChanged(e) {
var target = e.target;
canvas.height = target.value;
drawScreen();
}
function drawScreen() {
}
#canvas{
border:1px solid black;
}
<canvas id="canvas"></canvas>
<h3>Height</h3>
<select name="Height" id='height'>
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
</select>
<h3>Width</h3>
<select name="Width" id='width'>
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
</select>
相关文章:
- Div根据<选择>菜单
- 如何更改<选择>使用angularJS从控制器获得的值
- 当<选择的选项>重新选择
- 依赖<选择>HTML和JavaScript菜单
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- 如何传递相同页面<选择>值到同一页<f: param>
- 渲染<选项值=“;foo”;选择>在服务器上
- <选择>标签不起作用
- 当我有<选择>下拉列表
- 记住<选择>重新加载页面
- <中的链接;选择>下拉选项
- 映射多个<选择>至<输入>
- <上的applyBindings();选择>正在导致我的subscribe()起火,
- 触发器<输入类型=“;文件“>用angular程序选择文件
- 如何动态生成X数量的新<输入>基于a<选择>(Angular2内)
- 在<选择>使用angular ng选项可能使用ng init
- 如何在提交<选择>与AngularJS
- jQuery将输入集中在下一个tr->td时,td包含一个输入字段,但从不关注html选择
- 使用动态<选择>以显示<输入类型=“;文本>
- 正在读取<p: 选择一个菜单/>在onchange回调中