setAttribute不能使用JQuery

时间:2015-05-25 18:25:17

标签: javascript jquery html

我正在尝试使用此代码:

HTML:

<li><a class="main-but" href="#" id="click-no-po" onclick="porch_off('main-cpo');activeSelectPorOff();" >No Porch</a></li>

脚本:

function activeSelectPorOff() {
    document.getElementById('click-no-po').setAttribute('class', 'main-but active');
    document.getElementById('click-cpo').setAttribute('class', 'main-but');
}

potch_off功能正常运行,但我似乎无法设置属性。

我不是最熟练的jQuery和JavaScript,但我正在努力。

4 个答案:

答案 0 :(得分:1)

使用此选项添加Class:

$("#click-no-po").addClass('main-but active');

或者这样删除Class:

$("#click-no-po").removeClass('main-but active');

不要忘记使用ready函数来确保js代码找到ID。

答案 1 :(得分:1)

尝试切换课程

$('a.main-but').on('click',function(e){
  e.preventDefault();
  $(this).toggleClass("active");
});
.active{background:red;display:inline-block;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="main-but" href="#">No Porch</a>

答案 2 :(得分:1)

如果您尝试使用jquery toggleClass

,请尝试这样的操作
function activeSelectPorOff() {
    $('click-po').toggleClass('main-but');
}

答案 3 :(得分:1)

首先,我在你的测试代码上,仅在元素&#39; a&#39;带有id,所以在你的功能中

    function activeSelectPorOff() {
        document.getElementById('click-no-po').setAttribute('class', 'main-but active');
        document.getElementById('click-cpo').setAttribute('class', 'main-but');
    }

document.getElementById(&#39; click-cpo&#39;)返回一个null元素,当你尝试用.setAttribute()读/​​写时,这个trhows和exeption你可以读取null的属性

    function activeSelectPorOff() {
        var a=document.getElementById('click-no-po');
        var b=document.getElementById('click-cpo').setAttribute('class', 'main-but');
        try{
          a.setAttribute('class', 'main-but active');
        }catch(e){
          console.log(e)
        }
        try{
          b.try{a.setAttribute('class', 'main-but active');
        }catch(e){
          console.log(e)
        }
    }

这应该避免函数停止,另一种方法是在尝试设置属性之前检查!= null