2015-12-23 5 views
-1

Первый код innerHTML работает без каких-либо проблем, однако второй код innerHTML вызывает проблемы. Его значение равно undefined.Javascript: innerHTML не работает

names = ["Man", "Man 2", "Man 3"]; 
 
textdata = ["RISIKESI", "This service is amazing", 
 
    "Best RISIKESI I have so used!" 
 
]; 
 
i = 1; 
 

 
function anim() { 
 
    text = document.getElementById("theText"); 
 
    text.innerHTML = textdata[i]; 
 
    name = document.getElementById("theName"); 
 
    name.innerHTML = names[i]; 
 
    if (i == 2) { 
 
    i = 0; 
 
    } else { 
 
    i++; 
 
    } 
 
} 
 

 
var int = setInterval(anim, 2000);
<div class="cd-testimonials-wrapper cd-container"> 
 
    <ul class="cd-testimonials"> 
 
    <li> 
 
     <p id="theText">RISIKESI</p> 
 
     <p id="theName" class="t">Man</p> 
 
    </li> 
 
    </ul> 
 
</div>

+0

Вы должны объявить свои глобальные и локальные переменные с 'var'. – Pointy

+3

Вы столкнулись с свойством 'window.name' браузера. Я чувствую, что это обман, но он не может найти его сейчас. Используйте что-то другое, кроме 'name', или примените переменную к функции, и проблема исчезнет. –

+0

NB: объявляйте свои локальные переменные с помощью 'var', используйте согласованный отступ, будьте осторожны при использовании пробелов (id =" theName ", i = 1 ;, и т. Д.). – enguerranws

ответ

-1

Его из-за вашего имени переменной name. Вы не использовали ключевое слово var, поэтому ваша переменная теперь является глобальной. Теперь он сталкивается с window.name. Измените имя переменной, и она должна работать нормально.

И когда вы хотите инициализировать локальные переменные, всегда используйте ключевое слово var.

2

Вы не использовали var, так что вы пытаетесь установить name как глобальный, но window.name уже существует, и (потому что он, внутренне, определяется с установщиком) может только должен быть установлен в строку. Объект HTML-элемента преобразуется в строку, после чего свойство innerHTML на нем перестает иметь какое-либо особое значение.

Использовать var при объявлении переменной для создания локально локализованного объекта.

Вы можете воспользоваться JS Hint, чтобы выделить возможные проблемы, подобные этому, в вашем JS и strict mode, чтобы превратить определенные ошибки (например, этот) в ошибки, которые будут выделены в инструментах разработчика вашего браузера.

+0

Простой пример, подтверждающий, что вы говорите: https://jsfiddle.net/b41gy10w/ :) – enguerranws

-1
var names = ["Man", "Man 2", "Man 3"]; 
var textdata = ["RISIKESI", "This service is amazing", 
"Best RISIKESI I have so used!"]; 
var i =1; 
var text = document.getElementById("theText"); 
var nameEl = document.getElementById("theName"); 
function anim(){ 
    text.innerHTML = textdata[i]; 
    nameEl.innerHTML= names[i]; 
    i!=2 ? i++ : i=0 
} 

var int = setInterval(anim, 2000); 

// http://codepen.io/anon/pen/ZQpExv

Смежные вопросы