【问题标题】:Getting checkbox value/name shows empty or undefined alert获取复选框值/名称显示空或未定义的警报
【发布时间】:2012-11-01 07:37:30
【问题描述】:

这是 php 代码块...

echo "<td> 
          <input type='checkbox' value='online_$row[0]' " .                                             
          $checked[$row[$i]]. " onchange='background()'/>                                   
      </td>";

这是非常简单的 javascript 代码...

function background()
{
    alert(this.value); 
}

如何使用 this 关键字获取复选框的名称?

【问题讨论】:

    标签: php javascript


    【解决方案1】:
     echo "<td> 
          <input type='checkbox' value='online_$row[0]' " .                                             
          $checked[$row[$i]]. " onchange='background(this)'/>                                   
      </td>";
    
    function background(ele)
    {
    alert(ele.value); 
    }
    

    【讨论】:

      【解决方案2】:

      thisonclick 函数内的输入……但该函数在没有任何上下文的情况下调用 background,因此它获取 window 的默认上下文,因此在该函数内部 thiswindow

      直接将background函数绑定到输入元素,而不是使用onclick属性创建新函数。

      refToInput.addEventListener('change', background);
      

      请参阅MDN for more reading on addEventListener,包括有关浏览器兼容性的说明。

      【讨论】:

      • 我在读这个...quirksmode.org/js/this.html也许我误解了?我认为从元素“this”调用函数时会引用该元素。
      • @DeusDeceit — 是的,但正如答案所说,您从元素调用 onclick,并且从 onclick 函数调用 background
      【解决方案3】:

      在JS函数中你必须传递一个对象,所以“this”将被实际定义。 例如,您可以使用:

      function background(elem)
      {
          alert(elem.value); 
      }
      

      一旦函数没有任何参数,“this”就不会被定义,因此函数不会作为例外运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-08
        • 2023-03-31
        • 2011-06-17
        • 1970-01-01
        • 2015-07-17
        • 1970-01-01
        • 2014-02-18
        相关资源
        最近更新 更多