如何在javascript中动态声明变量

时间:2015-09-29 09:51:40

标签: javascript variables

可以动态地从post变量中读取吗? 即。

function ajax_edit_color(color_id, building)
{
    var color_name      = $('#color_name_'+color_id).val();
    var color_hex_code  = $('#color_hex_code_'+color_id).val();
    console.log(color_name, color_hex_code);
}

当我查看控制台时,变量是未定义的。这是否有正确的语法?

编辑: HTML是动态的(PHP):

<label for="color_name_<?php $value['id']; ?>">Color name : </label>
<input type="text" name="color_name_<?php $value['id']; ?>" id="color_name_<?php $value['id']; ?>" class="form-control" required="required" value="<?php echo $value['color_name']; ?>" />
<label for="color_hex_code_<?php $value['id']; ?>">Color HEX code : </label>
<input type="text" name="color_hex_code_<?php $value['id']; ?>" id="color_hex_code_<?php $value['id']; ?>" class="form-control" required="required" value="<?php echo $value['color_code']; ?>" />

AND HERE是呈现的HTML:

<label for="color_name_">Color name : </label>
<input type="text" name="color_name_6" id="color_name_" class="form-control" required="required" value="orange" />
<label for="color_hex_code_">Color HEX code : </label>
<input type="text" name="color_hex_code_6" id="color_hex_code_" class="form-control" required="required" value="ff9c00" />

3 个答案:

答案 0 :(得分:0)

您的基本方法是正确的,因此我建议您从简化测试开始,例如没有PHP。我验证了一个基本的例子:

<!doctype html>
<html>
<head>
    <script type="text/javascript" src="js/libs/jquery-2.1.4.js"></script>  
    <script>
        function test(){
            var index=1;
            var val=$("#color_name_"+index).val();
            console.log( '****' +val);
        };
    </script>
</head>
<body>
    <button onclick="test();return false;">test</button>
    <input type="text" id='color_name_1' value='green'>
    <input type="text" id='color_name_2' value='blue'>
</body>

这很有效。现在,如果您自己的代码失败,请尝试查找差异,特别是: 1.你的javascript何时运行 - 它可能在&#34; color_name&#34;之前。元素在文档中呈现? 2.您的PHP是否会生成错误的值,可以通过查看文档源来测试

答案 1 :(得分:0)

查看最终的HTML:

<label for="color_name_">Color name : </label>
<input type="text" name="color_name_6" id="color_name_"
    class="form-control" required="required" value="orange" />

名称是对的,但是ID错了。修复你的PHP,javascript将开始工作。 ID必须为color_name_6,而不是color_name_

答案 2 :(得分:-1)

编辑您的javascript以匹配以下

function ajax_edit_color(color_id, building)
{
var color_name      = $('#'+color_id).val();
var color_hex_code  = $('#'+color_id).val();
console.log(color_name, color_hex_code);
}

// color_name_和color_hex_code_都已经成为你的ID的一部分。