需要Javascript Math.log()帮助

需要Javascript Math.log()帮助,javascript,Javascript,世界 我正在尝试用Javascript创建一个程序,该程序将键入的数字日志记录到HTML输入中。不幸的是,我遇到了一个问题,它无法接受带有.replace的字符串 其功能: 也就是说:当计算log10时,函数应该首先删除前4个字符的日志,然后删除最后一个括号,然后获取编号介于之间的日志 HTML包括样式元素、按钮和输入表单以及输出 //Function function calculate() { var inputString = do

世界

我正在尝试用Javascript创建一个程序,该程序将键入的数字日志记录到HTML输入中。不幸的是,我遇到了一个问题,它无法接受带有.replace的字符串

其功能:

也就是说:当计算log10时,函数应该首先删除前4个字符的日志,然后删除最后一个括号,然后获取编号介于之间的日志

HTML包括样式元素、按钮和输入表单以及输出

//Function
        function calculate() 
        {
            var inputString = document.getElementById("inpstr");
            var output = document.getElementById("output");

            //TESTING CODE
            /*
            if (inputString.value.startsWith("log(").endsWith(")"))
            {
                console.log(output.innerHTML = inputString.value.substring(4, 20).replace(")", ""));
            } 
                else 
            {
                output.innerHTML = "false";
            }
            */

            //Math.log() calc *****DOESNT WORK*****
            if (inputString.value.startsWith("log(").endsWith(")"))
            {
                output.innerHTML = Math.log(inputString.value.replace(")", "").substring(4, 20));
            } 
                else 
            {
                output.innerHTML = inputString.value;
            }

            event.preventDefault();
        }
如果有人能给我一个有效的解决方案,我将不胜感激

谢谢, 语法

由于只接受数字值,并且您试图向其传递字符串,因此应首先将此值解析为浮点数,然后将其传递给日志函数:

let val = parseFloat(inputString.value.replace(")", "").substring(4, 20));
output.innerHTML = Math.log(val);

我猜我是因为懒惰而被否决了,所以这里有一些快速信息。Gonras在你想要提取的内容上做得很对,但他忘了检查输入的内容是否是一个日志

这就是下面的正则表达式派上用场的地方!我正在将字段与以下内容匹配:

^word的开头,因为我们希望匹配整个字段。 日志 [-.\d]任何连续的数字序列\d、-、和“.”,由[]表示。\…\确保保存此内部零件以备将来使用。 $是单词的结尾,请参见1。 如果没有匹配项,res将为null。否则,res[0]是整个匹配项,因此整个输入字段和res[1]是第3点的第一个“捕获组”-这可能是数字

这当然不适用于多个内部,或者。等好好想想。 //作用 函数计算 { var inputString=document.getelementbyidipstr; var输出=document.getElementByIdoutput; var res=/^log\[-.\d]*\$/.execinputString.value; 如果存在 output.innerHTML=Math.logres[1]; 其他的 output.innerHTML=res; } document.getElementByIdoutput.innerHTML='start'; 计算
它不会接受带有.replace的字符串。你能详细说明一下吗?您是否调试了代码并查看了传递给Math.log的值?您正在向Math.log发送一个需要数字的字符串。您可以使用parseFloat将其转换为数字。我肯定您只是把它弄混了,但您的意思是它接受“float”,并希望使用parseFloat。@kabanus谢谢!编辑了答案。肯定搞混了: