2017-01-26 3 views
-1

Я пытаюсь установить значение поля ввода к значению utm_parameter из URLзаписи в поле ввода

У меня есть этот код в голове страницы для извлечения значений параметров и установить значение полей

<!-- Get UTM Parameters Code --> 
<script> 
// Parse the URL 
function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
// Give the URL parameters variable names 
var source = getParameterByName('utm_source'); 
var medium = getParameterByName('utm_medium'); 
var campaign = getParameterByName('utm_campaign'); 

// Put the variable names into the hidden fields in the form. 
document.getElementsByName("utm_source").value = source; 
document.getElementsByName("utm_medium").value = medium; 
document.getElementsByName("utm_campaign").value = campaign; 
</script> 
<!-- End Get UTM Parameters Code --> 

это код, который находится в теле страницы.

<form> 
<input type="text" name="utm_source" id="utm_source" value=""> 
<input type="text" name="utm_medium" id="utm_medium" value=""> 
<input type="text" name="utm_campaign" id="utm_campaign" value=""> 
</form> 

Параметры извлекаются успешно, но они не заданы как значение полей ввода.

С кодом что-то не так?

+0

Я бы не рекомендовал использовать 'document.write()' на всех. Если вы хотите протестировать/отладить, используйте «console.log();» и откройте консоль браузера. Возможно, этот пост поможет вам понять http://stackoverflow.com/questions/20273805/document-write-removes-other-html Также 'getElementsByName()' возвращает коллекцию всех элементов в документе с указанным именем - объект NodeList , – NewToJS

+1

'document.write()' не так, как вы думаете. – melancia

+0

Я положил document.write() только для того, чтобы узнать, успешно ли извлечен парметер. –

ответ

0

попробовать следующий

document.getElementsByName("utm_source")[0].value = source; 
document.getElementsByName("utm_medium")[0].value = medium; 
document.getElementsByName("utm_campaign")[0].value = campaign; 

document.getElementsByName() возвращает объект списка узла, следовательно, вы должны дать ему лечение, как массив. Reference

+1

Идет объяснение сделанных вами изменений? Некоторым людям нравится понимать, почему текущая попытка не работает и почему '[0]' позволяет ей функционировать. – NewToJS

+0

попробовал это, но он не работает. что-нибудь еще, что может быть неправильно? –

+0

убедитесь, что ваш скрипт находится внизу страницы перед тегом. попробуйте предупредить (document.getElementsByName ("utm_source"). length) –

0

ОК, теперь это работает.

Я использовал код

document.getElementsByName("utm_source")[0].value = source; 
document.getElementsByName("utm_medium")[0].value = medium; 
document.getElementsByName("utm_campaign")[0].value = campaign; 

и переехал этот код из заголовка направо до закрытия.

теперь значения параметров UTM показать

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

  • Нет связанных вопросов^_^