2012-10-31 43 views
1

我想了解JavaScript中的用戶定義對象。具體來說,我試圖創建一個用戶定義的對象的方法,該對象將使用document.getElementById("holder")並使用document.createElement('p')附加到該對象,並向其添加一個帶有document.createTextNode("text")的文本節點。用戶定義的JavaScript對象的方法(原型)是否可以使用document.createElement?

目前,我的方法沒有這樣做。我已經測試過這個方法,它正在調用,但沒有任何內容出現在item.appendChild(otheritem)的頁面中。我瀏覽過其他文章,但沒有解釋我的情況,至少我知道。我的代碼如下。

<html> 
    <head> 
     <title></title> 
     <script type="text/javascript"> 
      function Person(fn, ln) { 
       this.fname = fn; 
       this.lname = ln; 
      } 
      Person.prototype.getFullName = function() { 
       var myPara = document.createElement('p'); 
       var strFullName = document.createTextNode("super"); 
       myPara.appendChild(strFullName); 
       var objHolder = document.getElementById("objHolder"); 
       objHolder.appendChild(myPara); 
      }; 

      function getSome() { 
       var fN = document.getElementById("fname").value; 
       var lN = document.getElementById("lname").value; 
       var Myperson = new Person(fN, lN); 
       alert(Myperson.fname); 
       Myperson.getFullName(); 
      } 
     </script> 
    </head> 
    <body> 
     <form id="holder">First Name: 
      <input id="fname" type="text" width="40" />Last Name: 
      <input id="lname" type="text" width="40" /> 
      <button id="buildObj" value="Click" onClick="getSome()">Click</button> 
     </form> 
     <div id="objHolder"></div> 
    </body> 
</html> 

任何幫助或建議,將不勝感激。此外,如果我錯過了一個關鍵概念,知道這也會很好。

謝謝, 邁克

+0

爲什麼當它不返回任何東西並且有副作用時被命名爲getFullName?您應該將其重命名爲適當的內容createNameElem –

+0

要回答您的標題問題:是的,當然可以。爲什麼不應該呢? – Bergi

回答

2

追加的作品,但在表單提交,所以它重定向到另一個頁面的同時。您需要取消在submit事件的事件處理程序中通過return false提交表單的自然瀏覽器行爲。

<!DOCTYPE html> 
<html> 
<head> 
<title> 
</title> 
<script type="text/javascript"> 
function Person(fn,ln) { 
this.fname = fn; 
this.lname = ln; 
} 

Person.prototype.getFullName = function() 
{ 

var myPara = document.createElement('p'); 
var strFullName = document.createTextNode("super");myPara.appendChild(strFullName); 
var objHolder = document.getElementById("objHolder");objHolder.appendChild(myPara); 
}; 

function getSome(){ 
var fN = document.getElementById("fname").value; 
var lN = document.getElementById("lname").value; 

var Myperson = new Person(fN,lN); 
alert(Myperson.fname); 
Myperson.getFullName(); 
} 
</script> 
</head> 
<body> 
<form id="holder"> 
First Name: <input id="fname" type="text" width="40" /> 
Last Name: <input id="lname" type="text" width="40" /> 
<button id="buildObj" value="Click" onClick="getSome()">Click</button> 
</form> 
<div id="objHolder"> 
</div> 
<script> 
document.getElementById('holder').onsubmit=function(){ return false; } 
</script> 
</body> 
</html> 

更巧妙的方法是使用event對象,然後調用event.preventDefault但由於瀏覽器的不一致性它需要大量的代碼來得到它的權利..所以這個基本的例子,onsubmitreturn false應該足夠了。

+0

謝謝!那正是我正在尋找的。我沒有意識到它正在嘗試去另一頁。我仍然有很多學習要做。再次感謝! –

相關問題