2017-02-21 124 views
1

以下問題,我想UTM參數填充在隱藏的字段中。但不起作用。我不熟悉JavaScript,但所有其他字段只工作utm使問題。這就是與參數填充隱藏的字段不工作

myurl.com?utm_source=facebook的URL & utm_medium =嘰嘰喳喳& utm_campaign =谷歌

// 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 campaign = getParameterByName('utm_campaign'); 
 
    
 
// Put the variable names into the hidden fields in the form. 
 

 
document.getElementsByName("ck_field_utm_campaign").value = campaign;
<input type="hidden" value="" name="ck_field_utm_campaign" class="ck_field_utm_campaign" id="ck_field_utm_campaign">

回答

1

document.getElementsByTagName返回一個數組。 (按標籤名稱的元素)

所以,當你寫:

document.getElementsByName("ck_field_utm_campaign").value = campaign;

你基本上分配.value屬性由該函數返回一個數組。而是使用.querySelector(它返回一個元素或null)或訪問由getElementsByName返回的數組中的第一個項目,並將它分配給.value

使用querySelector:

document.querySelector("[name='ck_field_utm_campaign']").value = campaign; 

訪問的第一個項目:

var input = document.getElementsByName("ck_field_utm_campaign"); 
// input now contains an ARRAY of elements that match that name 
// but if you're sure that only one input has that name you can easily access 
// that input 
input = input[0]; 
input.value = campaign; 
+1

而且值得一提的,'input.value'是不一樣的'<輸入值= 「」>',它如果不小心會引起很多頭痛。 – Slime

相關問題