JavaScript难题

JavaScript难题,javascript,Javascript,我想将JavaScript函数从输入标记向上移动到标记,但它不起作用 这项工作: <input type="text" name="aaa" id="aaa" onkeyup="javascript:this.value= this.value.substring(0,1).toUpperCase()+ this.value.substring(1,this.value.length); if (this.value=='') document.getElemen

我想将JavaScript函数从输入标记向上移动到
标记,但它不起作用

这项工作:

<input type="text" name="aaa" id="aaa" onkeyup="javascript:this.value=
  this.value.substring(0,1).toUpperCase()+
    this.value.substring(1,this.value.length);
  if (this.value=='') 
    document.getElementById('aaaLabel').innerHTML='AAA';"
/>

这并不是:

<script type="text/javascript">
  function FieldOnKeyUp() {
    this.value=this.value.substring(0,1).toUpperCase()+
      this.value.substring(1,this.value.length);
    if (this.value=='') 
      document.getElementById('aaaLabel').innerHTML='AAA'; 
  }
</script>

函数FieldOnKeyUp(){
this.value=this.value.substring(0,1).toUpperCase()+
this.value.substring(1,this.value.length);
if(this.value=='')
document.getElementById('aaaLabel').innerHTML='AAA';
}



有什么区别?

此的值不会传递给单独的函数。实际上,函数中的
这个
被设置为
窗口
对象。您需要更改为这种类型的代码,以便将正确的值传递给函数:

<input type="text" name="aaa" id="aaa" onkeyup="FieldOnKeyUp(this)">

您的代码是:

<script type="text/javascript">
function FieldOnKeyUp(el) {
     el.value=el.value.substring(0,1).toUpperCase()+el.value.substring(1); 
     if (el.value=='') {
         document.getElementById('aaaLabel').innerHTML='AAA'; 
     }
}
</script>

功能FieldOnKeyUp(el){
el.value=el.value.substring(0,1.toUpperCase()+el.value.substring(1);
如果(标高值=“”){
document.getElementById('aaaLabel').innerHTML='AAA';
}
}

下面是一个显示此代码工作的示例:。

此的值不会传递给单独的函数。实际上,函数中的
这个
被设置为
窗口
对象。您需要更改为这种类型的代码,以便将正确的值传递给函数:

<input type="text" name="aaa" id="aaa" onkeyup="FieldOnKeyUp(this)">

您的代码是:

<script type="text/javascript">
function FieldOnKeyUp(el) {
     el.value=el.value.substring(0,1).toUpperCase()+el.value.substring(1); 
     if (el.value=='') {
         document.getElementById('aaaLabel').innerHTML='AAA'; 
     }
}
</script>

功能FieldOnKeyUp(el){
el.value=el.value.substring(0,1.toUpperCase()+el.value.substring(1);
如果(标高值=“”){
document.getElementById('aaaLabel').innerHTML='AAA';
}
}

下面是一个示例,演示了此代码的工作原理:。

我真的想为您使用的“难题”添加+1。@Downvoter:请给出一个原因,以便OP可以改进此问题。简单的否决投票也无济于事。我猜如果你查看javascript日志,你会看到错误。可能不同的是,通过移动javascript代码,你改变了
this
的定义。如果您执行
onkeyup=“FieldOnKeyUp(this)”
,然后使用
function FieldOnKeyUp(theField)
声明您的函数,您可能会更幸运。然后用
theField
@aroth替换
this
的每个实例,使您的评论成为一个答案,并为一些投票提供一把小提琴。旁白:我也不明白在这个问题上的反对票。我真的想为你使用的“难题”加1。@Downvoter:请给出一个理由,以便OP可以改进这个问题。简单的否决投票也无济于事。我猜如果你查看javascript日志,你会看到错误。可能不同的是,通过移动javascript代码,你改变了
this
的定义。如果您执行
onkeyup=“FieldOnKeyUp(this)”
,然后使用
function FieldOnKeyUp(theField)
声明您的函数,您可能会更幸运。然后用
theField
@aroth替换
this
的每个实例,使您的评论成为一个答案,并为一些投票提供一把小提琴。旁白:我也不理解在这个问题上的反对票。