2017-02-28 29 views
0

我想這讓輸入與某些對象的說法,如何使用選項在Javascript中的函數對象

function write(param) { 

var str = param.str; 
var elem = param.elem; 
document.getElementById(elem).innerHTML= str; 
} 

,我路過這個作爲一個參數,

write({ 
    elem:"op", 
    str:"Hello" 
}); 

的我要做的事情是,我有身份證「運」 font標籤,

<font id="op"></font> 

,當我運行此我不會打印你好,因爲我給出了你好作爲一個對象參數與​​op元素輸出。

+2

[適用於我](http://jsbin.com/solalefuba/edit?html,js,output)。也許不要使用'font',它已經被棄用了。 – 2017-02-28 10:14:27

回答

0

至於我看到它,你的代碼按預期工作。

答案使用選項對象上的功能:

在ES6默認參數可以防止值是不確定的,但它實際上並沒有彌補您傳遞一個對象缺少參數的情況下。

在這種情況下,我會建議使用Object.assign()

function write(options){ 
    options = Object.assign({}, { 
     myDefaultParam: 'Hello', 
     elem: null, 
     str: '' 
    }, options); 

    if(options.elem) document.getElementById(options.elem).innerHTML = options.str; 
} 

Object.assign()做什麼是要合併的與所提供的功能默認選項對象,允許您設置,你可以依靠默認參數。在這種情況下write({})將導致選擇在此對象:

{ 
    myDefaultParam: 'Hello', 
    elem: null, 
    str: ''  
} 

如果這是矯枉過正了你,我會建議乾脆請檢查是否鑰匙你這樣的param對象定義爲:

function write(param){ 
    if(!param || !param.elem || !param.str) return false; 
    return document.getElementById(param.elem).innerHTML = param.str; 
} 
1

我不確定你的代碼出錯的地方。在這裏你可以看到javascript和你生成的html應該一起工作。

function write(param) { 
 

 
    var str = param.str; 
 
    var elem = param.elem; 
 
    document.getElementById(elem).innerHTML = str; 
 
} 
 

 
write({ 
 
    elem: 'op', 
 
    str: 'Hello' 
 
})
<font id="op"></font>

+1

不可重複的原因有很多。 – 2017-02-28 12:55:48

相關問題