2017-02-21 5 views
1

問題が発生したため、UTMパラメータを隠しフィールドに入力します。しかし、動作しません。 javascriptに精通していないが、他のすべてのフィールドはutmだけが問題を解決した。パラメータFill Hiddenフィールドが機能しない

myurl.com?utm_source=facebook & 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とURLは配列を返すのthats。 (タグ名で要素)

だから、あなたが書いた:

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

関連する問題