2016-04-01 4 views
2

Я хотел использовать функцию Google Chrome, называемую тематическим цветом. Обычный синтаксис выглядит так:Рандомизировать тег html с помощью JavaScript

<meta name="theme-color" content="#c12432"> 

Однако я хочу использовать 3 разных цвета, поэтому я придумал этот код. Стоит отметить, что у меня нет опыта работы с JavaScript, поэтому, пожалуйста, скажите мне, что не так с кодом. То, что я хочу сделать, это то, что он ramdomly выбирает число, и с этим номером он изменяет содержимое = «значение» с указанными ниже.

function colorchanger() { 
    var x = Math.floor((Math.random() * 3) + 1); 
    if (x >= 3) { 
      document.getElementByName("theme-color").content = "#c12432"; 
     } 
    if (x = 2) { 
      document.getElementByName("theme-color").content = "#338fc4"; 
     } 
    if (x = 1) { 
      document.getElementByName("theme-color").content = "#d99e33"; 
     } 
    } 
+2

Может быть, [ '.setAttribute ('содержание', '#WHATEV')'] (https://developer.mozilla.org/en/docs/Web/API/Element/setAttribute)? – Marty

+2

Это [_getElement ** s ** ByName_] (https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName) – Tushar

+0

hit f12, это откроет вашу консоль. В вашей консоли вы можете увидеть такие ошибки, как «uncaught typeerror: document.getElementByName», но это зависит от браузера, который обычно генерирует ваш код и как его можно обнаружить. – scrappedcola

ответ

1

Не то, что вы просили, но если у вас есть доступ к PHP, то вы можете использовать в качестве альтернативы:

<?php 
randomTheme() { 
$themeColor[] = "#c12432"; // Color Name I.E. Red 
$themeColor[] = "#338fc4"; // Color Name I.E. Blue 
$themeColor[] = "#d99e33"; // Color Name I.E. Yellow 
$randomThemeColor = array_rand($themeColor); 

return $themeColor[$randomThemeColor]; 
} 
?> 

И тогда в вашей мета-тег: <meta name="theme-color" content="<?php echo randomTheme(); ?>">

Вы также можете сделать функцию как так что, но я предпочитаю более длинную версию, чтобы вы могли отметить, какие цвета в гексагонах - это то, что по имени у них. Это решение подходит для нескольких цветов, но первое решение подходит для большого списка.

<?php 
    randomTheme() { 
    $themeColor = array("#c12432","#338fc4","#d99e33"); 
    $randomThemeColor = array_rand($themeColor); 

    return $themeColor[$randomThemeColor]; 
    } 
    ?> 
0

Итак, сначала вы можете объединить, если заявления, чтобы сэкономить на время выполнения, как так:

if (x >= 3) { 
     document.getElementByName("theme-color").content = "#c12432"; 
    } 
else if (x == 2) { 
     document.getElementByName("theme-color").content = "#338fc4"; 
    } 
else if (x == 1) { 
     document.getElementByName("theme-color").content = "#d99e33"; 
    } 

Кроме того, если вы заметили, что я изменил x = 2 и x = 3 к x == 2 и x == 3, потому что один знак равенства является а двойное равенство - оператор сравнения. Поэтому, когда вы думаете, что проверяете, если x = 2, вы фактически устанавливаете x на 2.

Также обратите внимание на то, что добавляется в комментариях, это просто очевидные ошибки JavaScript.