2016-05-02 2 views
-2

this.startOffset и this.endOffset в следующем коде значение я использую для выбора отдельных символов в узлах:Как сделать 0, чтобы не оценивать как false в JavaScript?

this.startOffset = this.node.length - 1 || 
    this.node.firstChild.length - 1 || 
    this.node.childNodes.item(0).length - 1 || 
    this.node.childNodes.item(0).firstChild.length - 1 

this.endOffset = this.node.length || 
    this.node.firstChild.length || 
    this.node.childNodes.item(0).firstChild.length 

Я использую -1 в this.startOffset, потому что это значение в начале символа. (Например 0,1 будет выбрать первый символ в узле.)

Однако, поскольку this.node.childNodes.item(0).length - 1 будет 0 в первом символе, он будет возвращать false вместо 0 и код достигнет this.node.childNodes.item(0).firstChild.length - 1, вызывая ошибку.

Как это сделать, чтобы 0 не возвращал false, а вместо этого устанавливает this.startOffset в 0?

+0

будет не чище, чтобы просто удалить '-1' из условия? – gurvinder372

+2

это http://stackoverflow.com/questions/523643/difference-between-and-in-javascript должно помочь –

+0

@ gurvinder372 Вы хотите разместить его в другом месте? – alexchenco

ответ

1

Вы можете использовать тройной оператор, чтобы вернуть то, что вы хотите в качестве значения

this.startOffset = (condition) ? 1 : 0; 
1

Если текстовый узел является проблема, то попробуйте использовать вместо детей

this.startOffset = this.children.length || 
    this.children.item(0).children.length; 

Это будет показывать текстовые узлы и возвращает логическое значение в зависимости от того или нет, присутствует ребенок-узел и его дочерние узлы-.

Смежные вопросы