Javascript 为什么我的onclick事件抛出未定义?

Javascript 为什么我的onclick事件抛出未定义?,javascript,jquery,Javascript,Jquery,我有以下按钮: <input type="button" onclick="printDiv('print-content')" value="print a div!"/> 以及下面的JavaScript: <script> $(function() { function printDiv(divName) { alert('s') var printContents = document.getElementById(divName).inn

我有以下按钮:

<input type="button" onclick="printDiv('print-content')" value="print a div!"/>

以及下面的JavaScript:

<script>
$(function() {
  function printDiv(divName) {
   alert('s')
     var printContents = document.getElementById(divName).innerHTML
     w=window.open()
     w.document.write(printContents)
     w.print()
     w.close()
  }
})
</script>

$(函数(){
函数printDiv(divName){
警报('s')
var printContents=document.getElementById(divName).innerHTML
w=窗口。打开()
w、 文件写入(打印内容)
w、 打印()
w、 关闭()
}
})
当我单击printDiv时,尽管我得到以下错误:

未捕获引用错误:未定义printDiv付款历史记录:398 onclick


我真的不明白。

因为
printDiv
不在全局范围内。您已经用函数包装了它。因此,
printDiv
范围在该立即函数中,而不是全局范围


我做了一些改变。希望他们能帮助你

首先,我使用jquery为click事件定义了一个回调函数,然后显示div内容

下面是片段

函数printDiv(divName){
//然后找到名为divName的div的innerHTML
var printContents=document.getElementById(divName).innerHTML
//在警报中显示它们
警报(打印内容);
//和Document.write
文件写入(打印内容)
}
//我使用jquery来设计和捕获click函数
$(“输入”)。单击(函数(值){
//在这里,我使用单击对象的attr值调用print函数
printDiv(这个值);
});

DIVCONTENTS
如果您想了解有关事件处理程序的更多信息,我建议您阅读。