2012-03-21 30 views
7

Tôi đang sử dụng mã tương đối đơn giản này:jQuery/Javascript không hợp lệ bên trái tay trong phân

var height = help ? 'minus' : 'plus'; 
var prop = $('#properties'); 

if(height == 'minus'){ 
    prop.height(prop.height() -= 206); 
} else { 
    prop.height(prop.height() += 206); 
} 

Nó không thành công trên cả hai dòng mà các thêm/trừ! Bất kỳ ý tưởng?

+0

'- =' cố gắng trừ '206' từ 'prop.height () 'và gán kết quả cho nó. Nhưng 'prop.height()' trả về một giá trị và không phải là một biến. Tôi cho rằng bạn chỉ muốn bỏ qua '='. –

Trả lời

7

Nhà điều hành -= bằng operand = operand - value mà trong trường hợp của bạn sẽ trông như thế

prop.height() = prop.height() - 206; 

mà rõ ràng là sẽ thất bại. Bạn chỉ cần toán tử trừ để hoàn thành nhiệm vụ đó.

prop.height(prop.height() - 206); 

sẽ làm điều đó.

1

bạn không thể - = phương thức.

hoặc là bạn cần phải prop.height(prop.height() - 206); hoặc thu thập giá trị đầu tiên và sau đó - = nó giống như ...

var h = prop.height(); 
h -= 206 
prop.height(h); 
1

prop.height() -= 206 attemtps để gán cho giá trị trả về, mà không phải là một biến nên không thể; giống như (prop.height() = prop.height() - 206)

Bạn có thể thay thế; prop.height(prop.height() - 206);

Hoặc (prop.height(prop.height() + (height === 'minus' ? -206 : 206));)

1
var height = help ? 'minus' : 'plus'; 
var prop = $('#properties'); 
var propHeight = prop.height(); 

if(height === 'minus'){ 
    prop.height(propHeight - 206); 
} else { 
    prop.height(propHeight + 206); 
} 
1

Bạn đã có câu trả lời, nhưng tôi muốn đề cập đến lý do tại sao bận tâm với if/else để thêm hoặc trừ:

// subtract height if help is true, otherwise add height 
var heightmodifier = help ? -1 : 1; 
var prop = $('#properties'); 
var propHeight = prop.height(); 

prop.height(propHeight + (206 * heightmodifier)); 
Các vấn đề liên quan