2016-01-06 102 views
-6

我有點困惑這個JSON。我可以手動輸入json而無需document.getElementById(「anID」);它工作正常。我一直得到未終止的字符串文字。有人可以讓我看到[multiple] document.getElementById()並通過json發送它們的正確方法嗎?JSON與document.getElementById()

var form = '{"first_name":"'+document.getElementById("first_name").value+'", 
      "last_name":"'+document.getElementById("last_name").value+'"}'; 

var form = JSON.parse(form);  
    alert(form['first_name']); 
    alert(form.last_name); 
+6

[爲什麼你手動建立json字符串?這是完全倒退](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Object_literals) – PeeHaa

+0

是的,只是建立一個對象和'JSON.stringify'它。 – Cristy

+1

您不能像您所做的那樣將字符串分成多行。您必須連接單獨的字符串,或者在關閉'''之前在所有行的末尾添加反斜槓。 – Teemu

回答

2

This Works。我覺得這是你在試圖找出什麼:

var form = {"first_name":document.getElementById("first_name").value, 
       "last_name":document.getElementById("last_name").value}; 

console.log(form.first_name); 
console.log(JSON.stringify(form)); 

它發生,我認爲這是你真正想要的大概是什麼。你需要清理你的報價,然後使用eval)一點點(:

var form = {"first_name":"document.getElementById('first_name').value", 
      "last_name":"document.getElementById('last_name').value"}; 

var runThatFunction = eval(form.first_name);  
console.log(runThatFunction); 
2

您只需建立一個JavaScript對象,這樣的 -

var show = function() { 
 
    var form2 = {}; 
 
    form2.first_name = document.getElementById("first_name").value; 
 
    form2.last_name = document.getElementById("last_name").value; 
 

 
    alert(form2['first_name']); 
 
    alert(form2.last_name); 
 
};
<input type="text" id="first_name" value="Eric" /> 
 
<input type="text" id="last_name" value="Johnson" /> 
 
<a href="#" onclick="show()">Click me!</a>

+1

不要挑剔,但這是一個'JavaScript對象'而不是'JSON'對象,JSON只在'JavaScript'中作爲'string'存在。 – Cristy

+1

對不起。 :) –

相關問題