2015-05-26 4 views
0

В моем скрипте рандомизации я получаю сообщение об ошибке: Uncaught TypeError: document.getElementById не является функцией. Я рассмотрел некоторые другие проблемы с этой ошибкой при переполнении стека и попытался ее исправить. Я объявил переменную перед функцией, и поскольку переменная изменяется каждый раз, я устанавливаю ее в другую переменную. Я понятия не имею, почему этот код является проблемой, любая помощь приветствуется. HTML:Uncaught TypeError: document.getElementById не является функцией

<div id="GetPlayers"> 
    <input maxlength="1" id="input"> <button id="gp" onclick="gp()">Start!</button> 
    <br/> 
    <br/> 
    <button id="DJ" onclick="DJ();">Display Your Job!</button> 
    <br/> 
    <span id="DS">1) Input Amount Of Players. 2)Click 'Display Your Job!'</span> 
</div> 

Javscript

var al; 
var rl; 
var bd; 
function gp(){ 
    players = document.getElementById("input").value; 
    if(isNaN(players)){ 
     alert(players.toUpperCase() + "'s Players? Please Fix"); 
     return; 
    } 
    if(players === " "){ 
     alert("Please Define How Many People Are Playing!"); 
     return; 
    } 
    if(players === ""){ 
     alert("Please Define How Many People Are Playing!"); 
     return; 
    } 
    if(players < 4){ 
     alert("Sorry, You Need Atleast 4 Players To Play!"); 
     return; 
    } 
    SA(players) 
} 
function SA(players){ 
    var positions = ["Murderer", "Judge", "Innocent", "Innocent"]; //Pre-set positions 
    if(players == 5){ 
     positions.push("Co-Judge"); 
    }else if(players == 6){ 
     positions.push("Innocent", "Co-Judge"); 
    }else if(players == 7){ 
     positions.push("Murderer-2!", "Innocent", "Co-Judge"); 
    } 
    Randomize(players, positions) 
} 
function shuffle(o){ 
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
    return o; 
} 
function Randomize(players, positions){ 
    rl = shuffle(positions); 
    al = positions.length; 
    confirm("You Have: " + al + " Players, Correct?"); 
    alert(al + ". " + rl); 
} 
var counter; 
var rl; 
var c; 
var p; 
function DJ(){ 
    counter = 0; 
    var bd = 0; 
    for(var c = 0; c < al + 1; c++){ 
     if(counter == 0){ 
      p = c; 
      document.getElementById("DS").innerHTML=(rl[p]); 
      document.getElementById("DJ").innerHTML=("Click To Clear!"); 
      counter = 1; 
      BlankDisplay() 
     } 
    } 
} 
function BlankDisplay(){ 
    if(counter == 1){ 
     document.getElementById=("Click The Button Above To See Your Job!"); 
    } 
} 
+0

Поскольку вы назначаете строковое значение 'document.getElementById()'! –

ответ

5

В этой функции:

function BlankDisplay(){ 
    if(counter == 1){ 
     document.getElementById=("Click The Button Above To See Your Job!"); 
    } 
} 

Вы переопределение document.getElementById, в строку.

Итак, всякий раз, когда вы вызываете document.getElementById, после этого вы пытаетесь выполнить строку, поэтому вы получаете not a function. Поэтому я думаю, вы хотите изменить это на:

function BlankDisplay(){ 
    if(counter == 1){ 
     document.getElementById('someId').innerHTML = "Click The Button Above To See Your Job!"; 
    } 
} 
1

Ну ваша проблема эта линия:

document.getElementById=("Click The Button Above To See Your Job!"); 

Он не выбирает элемент и настройки текста, как вы делаете в кучу другого места, вы устанавливаете его в строку.

+1

Изучая основы JavaScript. – TyrionGraphiste

+2

ИМО, даже если вопрос не содержит исследований, вы не должны отвечать на него плохо. –

+2

Спасибо за ваше мнение и мнение. Ответ должен был быть очевиден после его указания. Похож на синдром усталости глаз. Мне не хотелось, чтобы вопрос нуждался в полном объяснении. Я все еще удивлен, что этот вопрос открыт, предположим, американский праздник замедлил близкие голоса. – epascarello