繁体   English   中英

在jQuery对象上使用innerHTML时无法正常工作

[英]innerHTML not working properly when used on a jQuery object

代码无法正常工作。 它没有在span.day内显示任何文本,而应该在今天(写本文时为星期二)显示该文本。 它还没有在$.each回调中正确添加类“ currentDay”。

 $('#showLess span.day').innerHTML=weekday[today]; 

 $.each($('#showMore p span.day'), function(index, item) {  
      if(typeof item.innerHTML != 'undefined') 
      {     
           alert('item.text:' +item.innerHTML);
           alert('weekday[today]'+item.innerHTML.indexOf(weekday[today])); 

           if(item.innerHTML.indexOf(weekday[today])!=-1) { 
                alert("check which element has added class currentDay:");
                item.addClass('currentDay');
           }else{
                if(item.hasClass('currentDay')) {
                     item.removeClass('currentDay'); 
                }
           }
      } 
 });

.innerHTML不会更改HTML,未按预期添加其他类。

<p id="showLess" class="less">
        <span class="day">**Tuesday**</span>
</p>

为什么没有显示一天?

为什么显示/隐藏不起作用?

$('.less').on('click', function(e) {
            $('#showMore').show();
            $('#showLess').hide();
        });

        $('.more').bind('click', function(e) {
            $('#showLess').show();
            $('#showMore').hide();
        });

您正在尝试在jQuery对象上调用JS属性。

例如innerHTML

您正在尝试在jQuery对象上调用它。

$('#showLessHours span.day').innerHTML

应该

$('#showLessHours span.day')[0].innerHTML

要么

$('#showLessHours span.day').html(weekday[today]);

并且在each loop 项中都有一个JS对象,您正尝试使用jQuery添加一个类。 首先将其转换为jQuery对象。

item.addClass('currentDay');
item.removeClass('currentDay');

应该

$(item).addClass('currentDay');  or $(this).addClass('currentDay');
$(item).removeClass('currentDay'); or $(this).removeClass('currentDay')

相反,您也可以在回调中使用$(this)代替$(item)对象,因为两者都引用相同的对象。

另一个小建议是,为什么要在包含jQuery的情况下混合使用普通JS和jQuery,并希望在应用程序中使用它们。

jsFiddle

因为.innerHTML不是jquery函数。 您可以使用.html()实现您要执行的操作。 另外,如果您真的想使用.innerHTML,则可以使用.get()来获取实际的DOM元素, 然后使用.innerHTML,但是...我不建议这样做。

我相信这个经过编辑的小提琴可以解决您的问题。 相关代码:

$('#showLessHours span.day').html(weekday[today]);
//...
if(item.html() != '') {     
    alert('item.text:' +item.text());
    alert('weekday[today]'+item.text().indexOf(weekday[today]));
    if(item.html().indexOf(weekday[today])!=-1) {
//...

除了Sushanth所说的之外,您还尝试在javascript对象上调用jQuery方法。

item.addClass

应该由

$(item).addClass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM