使用JavaScript将参数从表单发送到函数

时间:2019-04-08 11:12:35

标签: javascript html forms

我正在尝试将表单中的值发送到打开的新窗口。 在我的程序中,窗口打开,但是未发送值 private async Task TestSendEmail(DateTime SendAt) { string APIKey = ConfigurationManager.AppSettings["SendgridAPIKey"].ToString(); var datetimeOffset = new DateTimeOffset(SendAt, TimeSpan.Zero); var apiKey = Environment.GetEnvironmentVariable(APIKey); var client = new SendGridClient(apiKey); //var from = new EmailAddress(QueueEmailAdmin, "Example User"); var from = new EmailAddress("FromEmail@gmail.com"); var subject = "Test Email"; var to = new EmailAddress("myemail@gmail.com", "Example User"); var plainTextContent = "This is a test"; var htmlContent = "<strong>This is a test</strong>"; var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); msg.SendAt = datetimeOffset.ToUnixTimeSeconds(); var response = await client.SendEmailAsync(msg).ConfigureAwait(false); Console.WriteLine(msg.Serialize()); Console.WriteLine(response.StatusCode); Console.WriteLine(response.Body.ReadAsStringAsync().Result); } ,而是存在null。

我的代码:

val2
function eq(value) {
  ViewImg = window.open('http://localhost/coord.php?' + value, 'ViewImg', 'width=<?php print $realWidthNewWindow; ?>,height=<?php print $realHeightNewWindow; ?>', 'status=no', 'titlebar=0');
}

有人知道为什么会这样吗? 谢谢

4 个答案:

答案 0 :(得分:1)

  if (manager.logContains('.myTestString1.') || 
    manager.logContains('.myTestString2.')) { 
  error("Build failed because of this and that..") 
  }
function eq() {
  const value = document.getElementById('val2').value;
  ViewImg = window.open('http://localhost/coord.php?' + value, 'ViewImg', 'width=<?php print $realWidthNewWindow; ?>,height=<?php print $realHeightNewWindow; ?>', 'status=no', 'titlebar=0');
}

您无需将任何内容传递给click函数。 由于您已经拥有输入元素的id属性,因此单击时可以获得输入的值。 可能您想在其他地方使用该函数,这意味着您每次都要传递该元素。

如果您真的想传递某些内容,则可以传递id本身。

<form id='testform_eq' name='testform_new'> <input type='text' id='val2' name='val2'> <input type='button' value="Submit" onclick='eq()'> </form>

eq函数看起来比:

eq('val2')

比起您可以在其他输入的其他位置使用该功能。

答案 1 :(得分:0)

因为您应该这样做:document.getElementById("val2").value

document.getElementById(val2)不正确,如果您想获取id=val2值。

要解决此问题,您可以将eq(document.getElementById(val2)替换为eq(document.getElementById("val2").value)

function eq(value) {
  ViewImg = window.open('http://localhost/coord.php?' + value, 'ViewImg', 'width=<?php print $realWidthNewWindow; ?>,height=<?php print $realHeightNewWindow; ?>', 'status=no', 'titlebar=0');
  console.log(value);
}
<form id='testform_eq' name='testform_new'>
  <input type='text' id='val2' name='val2'>
  <input type='button' value='Submit' onclick='eq(document.getElementById("val2").value)'>
</form>

或仅将id放入函数调用中:eq(val2)

function eq(id) {
  ViewImg = window.open('http://localhost/coord.php?' + id.value, 'ViewImg', 'width=<?php print $realWidthNewWindow; ?>,height=<?php print $realHeightNewWindow; ?>', 'status=no', 'titlebar=0');
  console.log(id.value);
}
<form id='testform_eq' name='testform_new'>
  <input type='text' id='val2' name='val2'>
  <input type='button' value='Submit' onclick='eq(val2)'>
</form>

答案 2 :(得分:0)

如果要传递输入值,则应考虑两件事:

  1. getElementById接受字符串,但是您正在尝试传递不存在的变量
  2. 如果要传递值而不是元素,则应在元素后添加.value

最后,您应该具有如下所示的input元素:

<input type='button' value='Submit' onclick='eq(document.getElementById("val2").value)'>

这是一个实时示例:

<script>
function eq(value) {
  console.log(value);
  ViewImg = window.open('http://localhost/coord.php?' + value, 'ViewImg', 'width=<?php print $realWidthNewWindow; ?>,height=<?php print $realHeightNewWindow; ?>', 'status=no', 'titlebar=0');
}
</script>

<form id='testform_eq' name='testform_new'>
  <input type='text' id='val2' name='val2'>
  <input type='button' value='Submit' onclick='eq(document.getElementById("val2").value)'>
</form>

另一种选择是获取函数内部的值,如here所述。如果您不打算重复使用不同值的eq,则这种方法很好。您必须根据实际情况选择其中之一。

答案 3 :(得分:-1)

您需要使用输入的value属性。

更新代码

 <input type='button' value='Submit' 
 onclick='eq(document.getElementById(val2).value)'>