2016-10-06 5 views
0

Я работаю с моим сценарием, просто отображая дату, и я использую платформу duda для него , однако версия планшета не работает, пока рабочий стол и мобильный телефон в порядке. Мой сценарий наклеивается в конце тела, и я использую moment.jsMoment.js Дата не работает на планшете

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> 
<script> 
//for desktop mobile display date today 
window.onload = function(){ 
    var a = moment().format('LL'); 
    document.getElementById("dateToday").innerHTML = a; 

//for tablet 
    var b = moment().format('LL'); 
    document.getElementById("dateTodayTab").innerHTML = b; 
} 


</script> 

Консоль говорит: неперехваченный TypeError: Невозможно установить свойство «innerHTML» в нуле. Вот мой html-код для рабочего стола и планшета. Я проверил элемент планшета, а высота была 0px, в то время как настольная версия не была. Постарайтесь указать, в чем моя ошибка?

<h4> The date today is :<span id="dateToday"></span></h4> 
<h4> The date today is :<span id="dateTodayTab"></span></h4> 
+0

Вы подтвердили, что именно проблема Moment.js вызывает эту проблему? Это работает, если у вас просто есть «var a =» foo »;' и 'var b =" bar ";'? Это звучит очень маловероятно, основываясь на приведенной информации. – JJJ

+0

Рассмотрите свои ошибки более тщательно - тот, который вы получаете, говорит вам точно, что не так. «Невозможно установить свойство« innerHtml »из null означает, что элемент, который вы пытаетесь установить для даты, не найден в dom, либо потому, что его нет, либо ваш DOM некорректен. Это не имеет ничего общего с моментом, но скорее всего, из-за вашего отсутствующего тега тега на пролете. –

+0

О, извините и спасибо, что указали, что out.js работает на настольных и мобильных версиях, но только на планшете. Мой элемент существует, вы можете увидеть его здесь или просмотреть его, это было отдельный элемент для стола и вкладки: http://thecameldevelopers.editor.multiscreensite.com/preview/8367b6dd – camdev

ответ

0

Уже исправлено! Благодаря @JJJ проблема в том, что мой элемент в планшете был скрыт, поэтому его невозможно найти, поэтому мой скрипт останавливается и выплевывает ошибку Uncaught TypeError: нельзя установить свойство «innerHTML» из null, поскольку оно не существует в в режиме планшета. Я выполнил две функции на моем скрипте, которые будут выполняться, если пользователь просматривает только на настольном и планшете:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> 
<script> 
//for desktop mobile display date today 
window.onload = function(){ 

    var dateverify = document.getElementById("dateToday"); 
    var desktopDate = function(){ 
     //for desktop 
     var a = moment().format('LL'); 
     document.getElementById("dateToday").innerHTML = a; 
    } 
    var tabletDate = function(){ 
     //for tablet 
     var b = moment().format('LL'); 
     document.getElementById("datedate").innerHTML = b; 
    } 
    if(dateverify !== null){ 
     desktopDate(); 
    } 
    else{ 
     tabletDate(); 
    } 
} 
</script> 
1

В вашем HTML примере промежуток не закрыт

<h4> The date today is :<span id="dateToday"></span</h4> 
<h4> The date today is :<span id="dateTodayTab"></span</h4> 

Это должно быть так:

<h4> The date today is :<span id="dateToday"></span></h4> 
<h4> The date today is :<span id="dateTodayTab"></span></h4> 

(Не уверен, что это решение, но вы можете начать там)

+0

да спасибо за указание. Вы можете просмотреть его здесь, если хотите, для более четкого: http://thecameldevelopers.editor.multiscreensite.com/preview/8367b6dd Это был отдельный элемент для настольных компьютеров и планшетов. – camdev

-1

Я думаю, что событие window.onload запускается слишком рано, и скрипт не может получить элемент, поскольку он не отображается все же. Попробуйте использовать

window.document.body.onload 

вместо этого.

0

Это должно работать:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> 
<script type='text/javascript'> 
window.onload=function(){ 
    var a = moment().format('LL'); 
    document.getElementById("dateToday").innerHTML = a; 
    //for tablet 
    var b = moment().format('LL'); 
    document.getElementById("dateTodayTab").innerHTML = b; 
} 
</script> 
<h4>The date today is :<span id="dateToday"></span></h4> 
<h4>The date today is :<span id="dateTodayTab"></span></h4> 

Demo here

+0

Привет, спасибо за демонстрацию. Я уже пробовал, что в моем кодефене это работает, но когда я передаю его в версию вкладки, то он не работает, вы можете сделать предварительный просмотр здесь: http://thecameldevelopers.editor.multiscreensite.com/preview/ 8367b6dd/ – camdev

+0

Привет, это странно, потому что я это вижу. Здесь ss: https://postimg.org/image/ykdhqbzlt/ – Marcos

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