2016-12-15 11 views
8

Tôi muốn để có được tất cả các mã chức năng (với các thông số) và in nó trong div.codeIn với các thông số JS

tập tin html

<script src='script.js'></script> 
... 
<input type=text value='text' id='my_input'> 
<div class='code'></div> 
<script> 
    document.querySelectorAll('div.code')[0].innerHTML=func(document.getElementById('my_input')); 
</script> 

script.js

function func(param){ 
console.log(param); 
} 

Vì vậy, trong div.code nó phải là

"function func(text){ 
    console.log(text) 
    }" 

Tôi nên sử dụng cái gì để làm điều đó? Tôi cố gắng để sử dụng toString, toSource, JSON.stringify nhưng nó không hoạt động

Trả lời

6

Bạn nên sử dụng String() để tạo ra chuỗi từ chức năng mã

function f(param) { 
    console.log(param); 
} 

alert(String(f)); 
// ...innerHTML = String(f); 

Nếu bạn muốn thay thế param với sự đóng góp của bạn, bạn có thể hoạt động trên String(f) kết quả như trên chuỗi

alert(String(f).replace(/param/g, 'text')); 
// ...innerHTML = String(f).replace(/param/g, document.getElementById('my_input')); 

Hãy xem jsFiddle example này


Cũng đọc thêm ở đây về String() function

1

Tôi muốn giới thiệu gọi hàm vani toString của Function Object để stringify chức năng của bạn như thế này:

Function.prototype.toString.call(yourFunctionHere); 
//or just use it directly on your function, if you're not going to modify the prototype 
yourFunction.toString(); 

này in chức năng của bạn như bạn đề cập.

Nếu bạn muốn thay thế các giá trị sau đó, bạn có thể sử dụng replace kết hợp với regex.

Như thế này:

function myFunction(param1){ 
    alert(param1); 
} 

Function.prototype.toString.call(myFunction).replace(new RegExp('param1', 'g'), 'theParam'); 

này sẽ cung cấp cho bạn như sau:

"function myFunction(theParam){ 
    alert(theParam); 
}" 
3

Bạn có thể sử dụng:

f.toString(); 

function f(a, b, c) { 
 

 
} 
 

 
document.write(f.toString().replace(/\n/g, "<br>"));

Các vấn đề liên quan