Tôi có một biểu mẫu về cơ bản là một máy tính. bạn có thể gõ một phương trình vào và nó sẽ đánh giá nó. Tôi cũng có 2 trường nhớ (hộp văn bản có tên m1 và m2), nơi bạn có thể gõ thứ gì đó vào và nó sẽ giữ giá trị đó và khi bạn gõ biểu thức trong hộp đầu tiên, bạn có thể tham khảo m1 hoặc m2 trong phương trình của bạn và sẽ đánh giá bằng cách sử dụng các số bạn đã nhập trong các trường bộ nhớ.Cách kiểm tra xem tên eval có không được xác định
Vấn đề là nếu bạn cố gắng tham khảo m1 hoặc m2 trong phương trình của bạn và hộp văn bản trống, Bạn nhận được lỗi không xác định.
Tôi đã quay bánh xe hàng giờ để thử và đặt một số loại kiểm tra xem nếu phương trình được đánh giá là không xác định, chỉ hiển thị hộp bật lên. Tôi cần điều này trong javascript thô. bất kỳ trợ giúp nào được đánh giá cao.
function displayResult(thisElement)
{
thisElement.value = eval(thisElement.value); <!-- this line throws the error if you use m1 and no m1 is defined, m2 and no m2 is defined, etc -->
if(!(thisElement.value>0))
{
thisElement.value=0;
}
}
function mem(v)
{
v.value = eval(v.value);
eval(v.name+"="+v.value);
}
<input id="calcFormula" name="calculate" size="40" />
<input type="submit" value="Calculate" onclick="displayResult(this.form.calculate);" />
<input name="m1" id="m1" size="12" onchange="mem(this);" value="0" />
<input name="m2" id="m2" size="12" onchange="mem(this);" value="0" />
Without nhìn quá sâu vào câu hỏi, sẽ có vấn đề với việc kiểm tra để đảm bảo rằng m1.value và m2.value không được xác định trước khi cố gắng đánh giá? EDIT: Được rồi, tôi có thể thấy bây giờ tại sao điều đó sẽ không hoạt động. Tôi thừa nhận điều này phức tạp hơn nhiều so với lần đầu tiên xuất hiện. –
Ah !!! Quá nhiều eval !! – Mageek
Bạn thực sự nên sử dụng thư viện như Knockout.js. Đây chỉ là quá lộn xộn. –