首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单独文件中的'this.variable‘对象元素

单独文件中的'this.variable‘对象元素
EN

Stack Overflow用户
提问于 2016-08-04 19:06:15
回答 3查看 45关注 0票数 1

HTML代码:

代码语言:javascript
复制
<input class="jscolor" id="color-picker">

   <div id="rect" class="rect"></div>

   <script src="jscolor.js"></script>
   <script src="skrypt.js"></script>

Javascript代码:

代码语言:javascript
复制
 function update(jscolor) {
        document.getElementById('rect').style.backgroundColor = '#' +   jscolor;
}

window.onload=function() {
    document.getElementById('color-picker').onchange = update(this.jscolor);
}

在上面的示例中,函数'update‘不能正常工作,但是如果我在html中引入这个函数

代码语言:javascript
复制
<input class="jscolor" id="color-picker" onchange="update(this.jscolor)">

没问题。

所以我的问题是,如何遵循好的趋势,从html中删除事件归纳,并将其移动到单独的javascript文件中?

EN

回答 3

Stack Overflow用户

发布于 2016-08-04 19:10:37

...onchange =更新(this.jscolor)

这将在您附加事件处理程序时执行update

onchange=“更新(this.jscolor)”

这将在事件激发时执行update

若要以编程方式附加在事件发生时触发的事件处理程序,请执行以下操作:

代码语言:javascript
复制
document.getElementById('color-picker').addEventListener('change', function () {
    update(this.jscolor);
});
票数 2
EN

Stack Overflow用户

发布于 2016-08-04 19:10:33

您应该在函数体中寻址this

代码语言:javascript
复制
document.getElementById('color-picker').onchange = function () {
    update(this.jscolor);
};
票数 1
EN

Stack Overflow用户

发布于 2016-08-04 19:31:19

如果您正在寻找一种最佳实践、不引人注意的方法,请尝试下面的代码片段。

N.B.显然下面的代码片段是一个非常简单的示例,因为.rect只会更改为一个background-color (红色),但您可以修改脚本,使.rect可以更改为任意数量的background-color值。

代码语言:javascript
复制
var jscolor = 'rgb(255,0,0)';

function update(jscolor) {
    var rect = document.getElementsByClassName('rect')[0];
    rect.style.backgroundColor = jscolor;
}

function colorUpdate() {
var colorPicker = document.getElementsByClassName('color-picker')[0];
colorPicker.addEventListener('click',function(){update(jscolor);},false);
}

window.addEventListener('load',colorUpdate,false);
代码语言:javascript
复制
.color-picker, .rect {
float: left;
width: 100px;
height: 100px;
margin-right: 40px;
}

.rect {
background-color: rgb(236,236,236);
}
代码语言:javascript
复制
<div class="color-picker">Click Me to give Rect a red background</div>
<div class="rect">Rect</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38765626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档