Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 定义的函数是;“未定义”;_Javascript_Html - Fatal编程技术网

Javascript 定义的函数是;“未定义”;

Javascript 定义的函数是;“未定义”;,javascript,html,Javascript,Html,下面的函数是在我的页面的head标签中定义的 <script type="text/javascript"> $(document).ready(function(){ function greenTab(input){ if ($input === 'second') { $('#green').css({'display':'none'}); $('#2ndgreen').css({'display':'initial'});

下面的函数是在我的页面的head标签中定义的

<script type="text/javascript">     
$(document).ready(function(){

function greenTab(input){
    if ($input === 'second') {
        $('#green').css({'display':'none'});
        $('#2ndgreen').css({'display':'initial'});
    } else if ($input === 'first') {
        $('#2ndgreen').css({'display':'none'});
        $('#green').css({'display':'initial'});
    }
}   
});
</script>

$(文档).ready(函数(){
功能绿色选项卡(输入){
如果($input=='second'){
$('#绿色').css({'display':'none'});
$('2ndgreen').css({'display':'initial'});
}else如果($input==='first'){
$('2ndgreen').css({'display':'none'});
$('#绿色').css({'display':'initial'});
}
}   
});
我这样称呼它:

<div class="container">
    <ul class="nav nav-pills">
        <li class="active" onclick="greenTab('first')"><a>1st Green</a></li>
        <li class="active" onclick="greenTab('second')"><a>2nd Green</a></li>                         
    </ul>
</div>

    第一个绿色 第二个绿色
问题:Firebug说函数没有定义。 预期结果:对于要定义的功能。

为什么它会被破坏:
onclick
属性期望函数在全局范围内公开

由于您在
ready
函数中定义了
greenTab
,因此它是在该函数的范围内定义的,而不是在全局范围内,因此在全局范围内找不到它

如何修复它: 要么:

  • 在全球范围内公开它。(不要这样做)
  • 通过JS而不是HTML添加事件侦听器(可能会这样做)
  • 由于您使用的是jQuery,因此应添加如下事件处理程序:

    $('some selector').click(function () {
        greenTab('first');
    });
    
    某些选择器现在应该是
    ”。容器ul li:n类型(1)
    , 但我建议在这些元素中添加一些内容,以便更好地进行选择,例如:

    <div class="container">
        <ul class="nav nav-pills">
            <li class="active first-green"><a>1st Green</a></li>
            <li class="active second-green"><a>2nd Green</a></li>                         
        </ul>
    </div>
    
    您还需要对第二个单击处理程序执行相同的操作。

    为什么它会损坏:
    onclick
    属性期望函数在全局范围内公开

    由于您在
    ready
    函数中定义了
    greenTab
    ,因此它是在该函数的范围内定义的,而不是在全局范围内,因此在全局范围内找不到它

    如何修复它: 要么:

  • 在全球范围内公开它。(不要这样做)
  • 通过JS而不是HTML添加事件侦听器(可能会这样做)
  • 由于您使用的是jQuery,因此应添加如下事件处理程序:

    $('some selector').click(function () {
        greenTab('first');
    });
    
    某些选择器现在应该是
    ”。容器ul li:n类型(1)
    , 但我建议在这些元素中添加一些内容,以便更好地进行选择,例如:

    <div class="container">
        <ul class="nav nav-pills">
            <li class="active first-green"><a>1st Green</a></li>
            <li class="active second-green"><a>2nd Green</a></li>                         
        </ul>
    </div>
    

    您还需要对第二个单击处理程序执行相同的操作。

    #green
    #2ndgree
    没有在任何地方定义。实际上它们是。但是它有很多代码,我不知道是否应该包含它。
    #green
    #2ndgree
    没有定义。实际上它们是。但是它有很多代码,我不知道是否应该包含它。我从ready函数中取出它们,它说它们仍然没有定义:(好的,我这样做了,现在我没有得到未定义的错误,但是函数不工作。我从ready函数中取出它们,它说它们仍然没有定义:(好的,我做到了,现在我没有得到未定义的错误,但是函数不工作。