Javascript 如何在单击时更改小部件参数
我在我的页面中有一个小部件来获取一些数据,我这样调用这些数据:Javascript 如何在单击时更改小部件参数,javascript,jquery,Javascript,Jquery,我在我的页面中有一个小部件来获取一些数据,我这样调用这些数据: <div id="widgetContain"> <script type="text/javascript" src="https://widget.com/widgetscript.js" async> { "a": "1m", "b": 425, "c": "light",
<div id="widgetContain">
<script type="text/javascript" src="https://widget.com/widgetscript.js" async>
{
"a": "1m",
"b": 425,
"c": "light",
"d": false,
"e": 450,
"f": "blue",
"g": true,
"g": "en"
}
</script>
</div>
<body>
<div id="widgetContain">
<script type="text/javascript" src="https://widget.com/widgetscript.js" async></script>
</div>
<!-- end of page -->
<script>
var params = {
a: "1m",
b: 425,
c: "light",
d: false,
e: 450,
f: "blue",
g: true,
h: "en"
};
$('.ttlink').on('click', function(e) {
params.f = $(this).data("href");
});
</script>
</body>
这显然是行不通的。如何加载脚本,然后将键/值对作为参数加载,并在单击链接时修改它们,而只加载库一次
根据api作者的预期用途工作的小提琴-
具有我需要的设置的小提琴->将它们设置为变量
let params = { "a": "1m", "b": 425,
"c": "light", "d": false,
"e": 450, "f": "blue",
"g": true, "g": "en" };
并更改值
$('.ttlink').on('click', function(e){
params.b = $(this).attr('data-href');
});
脚本元素不可修改我建议如下:
<div id="widgetContain">
<script type="text/javascript" src="https://widget.com/widgetscript.js" async>
{
"a": "1m",
"b": 425,
"c": "light",
"d": false,
"e": 450,
"f": "blue",
"g": true,
"g": "en"
}
</script>
</div>
<body>
<div id="widgetContain">
<script type="text/javascript" src="https://widget.com/widgetscript.js" async></script>
</div>
<!-- end of page -->
<script>
var params = {
a: "1m",
b: 425,
c: "light",
d: false,
e: 450,
f: "blue",
g: true,
h: "en"
};
$('.ttlink').on('click', function(e) {
params.f = $(this).data("href");
});
</script>
</body>
将加载外部库,加载所有内容后,将运行第二个脚本块
更新
我可以试一下别的菜
<body>
<div id="widgetContain">
<script>
var params = {
a: "1m",
b: 425,
c: "light",
d: false,
e: 450,
f: "blue",
g: true,
h: "en"
};
$('.ttlink').on('click', function(e) {
params.f = $(this).data("href");
});
</script>
<script type="text/javascript" src="https://widget.com/widgetscript.js" async>
params
</script>
</div>
<!-- end of page -->
</body>
这首先定义名为params的对象,然后绑定回调以单击,然后当小部件加载时,可以加载该对象。注意,这只会在页面加载时加载一次,所做的更改不会在页面加载后影响小部件
如果您需要进一步的帮助,您需要更具体地告诉我们您正在使用什么小部件。提供一个最小值。示例:因此在初始加载中,我应该:{let params={a:1m,b:425,c:light,d:false,e:450,f:blue,g:true,g:en};}加载时,我收到此错误嵌入小部件技术分析。js:1小部件设置解析错误:语法错误:JSON中位置0处的意外标记l,然后单击链接,我收到此错误main.js?ver=20151215:105未捕获引用错误:参数不正确defined@DirtyBirdDesign它不会在{和}中。它将是var params={}或让params={}在section.robinseering&@Twisty-question中使用一些fiddle链接进行更新,以显示它是如何工作的,以及我希望如何修改它。我使用了console.logparams,它按预期显示了键/值。但是,我需要它在标记内部运行,如我的示例所示。我在加载时收到这个错误,并且它没有在单击时使用参数重新提交-Widget settings解析错误:SyntaxError:JSON的意外结束input@DirtyBirdDesign您的示例不完整,不清楚您需要运行什么。您的示例只是在脚本块中定义了一个未命名的对象。问题将使用两个FIDLE链接进行更新。AFAIK标记可以是external:或inline var example=value;函数getValueexample{….我不记得显示这两种特性的标记。[强调我的]我不反对-但是这是根据API作者设置小部件的方式->