Uncaught ReferenceError: Неверная левая часть в назначении - PullRequest
1 голос
/ 05 декабря 2011

Я пытаюсь сделать опрос, и с каждым кликом присваивать переменной определенную фразу.Затем отобразите его в div, когда я нажму span#display .Я получаю «Uncaught ReferenceError: Недопустимая левая сторона в назначении», когда я запускаю этот код:

var a = "none chosen";
function companyPicka()
            {
                a= "I love Valve";
            } 
            function companyPickb()
            {
                a= "I love Bethesda";
            } 
            function companyPickc()
            {
                a= "I love EA";
            } 
            function companyPickd()
            {
                a= "I love Ubisoft";
            } 
            function companyPicke()
            {
                a= "I play terrible NES, SNES games";
            } 
            function companyPickf()
            {
                a= "I like something that's so underground I wouldn't expect  you to know it";
            }
function display()
            {
                document.getElementById("display") = "a+''+b+''+c+''+d+''+e+''+f+''+g+''+h";
            }


<div>
                <span onclick="companyPicka(); this.style.border='inset';">
                Valve &#60;3</span> 
                <span onclick="companyPickb(); this.style.border='inset';"> 
                Bethesda :\ </span>
                <span onclick="companyPickc(); this.style.border='inset';">
                EA </span>
                <span onclick="companyPickd(); this.style.border='inset';"> 
                Ubisoft </span>
                <span onclick="companyPicke(); this.style.border='inset';">
                LJN</span>
                <span onclick="companyPickf(); this.style.border='inset';">
                Other</span>
            </div>

<span onclick="display();"> See Results </span>
            <div id="display">
            </div>

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

Следующая строка неверна:

document.getElementById("display") = "a+''+b+''+c+''+d+''+e+''+f+''+g+''+h";

Невозможно назначить строку непосредственно элементу HTML.Один из способов установить содержимое элемента - с помощью .innerHTML:

document.getElementById("display").innerHTML = "something";

Обратите также внимание, что в правой части вашего выражения находится строка, содержащая фактический текст a+''+b+''+c+''+d+''+e+''+f+''+g+''+h, то есть символ "a "затем символ" + ", затем два апострофа и т. д. Это не выражение, объединяющее переменные a, b, c и т. д. (не то, что в вашем коде, как показано, есть переменные для b, c, d и т. д.).Если вы удалите окружающие двойные кавычки, это будет выражение, объединяющее переменные.

Наличие разных функций для каждой опции - очень грязный способ кодирования вещей такого типа.Возможно, вам захочется попробовать что-то вроде следующего (может быть дополнительно убран, но я не хочу перегружать вас слишком много информации сразу):

var phrases = {
      a : "I love Valve",
      b : "I love Bethesda",
      c : "I love EA",
      d : "I love Ubisoft",
      e : "I play terrible NES, SNES games",
      f : "I like something that's so underground I wouldn't expect  you to know it"
    },
    currentPhrase = "none selected";

function companyPick(which) {
   currentPhrase = phrases[which] || "none selected";
}

function display() {
   document.getElementById("display").innerHTML = currentPhrase;
}

<div>
  <span onclick="companyPick('a'); this.style.border='inset';">
  Valve &#60;3</span> 
  <span onclick="companyPick('b'); this.style.border='inset';"> 
  Bethesda :\ </span>
  <span onclick="companyPick('c'); this.style.border='inset';">
  EA </span>
  <span onclick="companyPick('d'); this.style.border='inset';"> 
  Ubisoft </span>
  <span onclick="companyPick('e'); this.style.border='inset';">
  LJN</span>
  <span onclick="companyPick('f'); this.style.border='inset';">
  Other</span>
</div>

<span onclick="display();"> See Results </span>
<div id="display"></div>
3 голосов
/ 05 декабря 2011

Эта строка неверна:

document.getElementById("display") = "a+''+b+''+c+''+d+''+e+''+f+''+g+''+h";

используйте это:

document.getElementById("display").innerHTML = a+''+b+''+c+''+d+''+e+''+f+''+g+''+h;

Edit:

На самом деле это не делает сцену: a+''+b+''+c+''+d+''+e+''+f+''+g+''+h

Это так же, как это: a+b+c+d+e+f+g+h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...